Adobe Implementation Playbook

Reference

Reference

Interview prep

347 questions from every page, in project order. Say your answer out loud, then reveal the model answer.

Build 1 · AEP 36

How would you run a discovery workshop for an AEP implementation?

Bring marketing, IT and privacy together, list business goals, turn each into a named use case, then map the sources, identities, consent and activation channel each one needs.

How do you decide which use cases go in Wave 1?

Score each on data availability, feasibility, business impact and dependencies, then pick the top 3 to 5 that are high value and can run on data you already have.

A client wants "all their data" in AEP. How do you respond?

Push back politely: ingest what the agreed use cases need. Extra data costs licence volume, adds governance risk and slows the build.

Development vs. production sandbox: what is the difference?

Development sandboxes are for building and testing; production sandboxes hold live data that feeds real activation. You build in Dev and promote validated configuration to Prod.

How do you move schemas and datasets from Dev to Prod?

Package them with sandbox tooling, then import the package into the production sandbox and re-run QC there.

How would you limit a user to one sandbox and schema work only?

Create a role whose permissions cover schema management only and whose sandbox access lists just that sandbox, then assign the user to it.

Namespace vs. identity value?

The namespace is the type or context (Email, CRMID); the value is the actual ID ("a@b.com"). Identity Service needs both to link records.

What is ECID and where does it come from?

The Experience Cloud ID: a device/browser identifier set by Web SDK or the ECID service. It identifies anonymous visitors and links to known IDs at login.

Would you make a PNR or order ID an identity?

No. Several travellers share a PNR and an order is a transaction, so using them as identities would merge different people. Keep them as fields.

Individual Profile vs. ExperienceEvent class: when do you use each?

Profile for slowly changing attributes such as name, tier and consent; ExperienceEvent for time-stamped actions such as page views, bookings and purchases.

How would you model a booking with several flight segments?

As an ExperienceEvent with an array of segment objects (flight number, origin, destination, date) plus booking-level fields like fare class and total.

What can you still change after data is ingested?

Only additive changes: add new fields and field groups. Once a schema has been used to ingest data you cannot remove, rename or change the type of existing fields.

Field group vs. data type?

A field group adds a set of fields to a schema of a given class; a data type is a reusable structure (like an address) that you place inside field groups or schemas.

Why do custom fields sit under the tenant ID?

It namespaces your organization's fields so they never collide with Adobe standard fields or other organizations' fields.

What do you do when no standard field fits?

Create a custom field group with fields under the tenant object, reusing data types where possible, and document it in the SDR.

What is the union schema?

A merged view of every Profile-enabled schema of the same class. Segmentation and the profile viewer read the union, not individual schemas.

Identity fields vs. identityMap?

Identity fields mark specific schema fields with a namespace; identityMap is a flexible map of namespaces to values, used heavily by Web and Mobile SDK events.

Why does the primary identity matter?

It is the key the profile fragment is stored under, so a wrong or shared primary identity breaks profile assembly and can merge people.

Schema vs. dataset?

The schema is the structure (the blueprint); the dataset is where records that follow that structure are stored.

Data lake vs. Profile store?

The data lake keeps all ingested data for Query Service and CJA; the Profile store keeps Profile-enabled data assembled into real-time profiles for segmentation and activation.

Which datasets would you not enable for Profile?

Raw logs, high-volume data no audience uses, and anything sensitive that must not be activated. They can still be analysed from the data lake.

Batch vs. streaming ingestion?

Batch is scheduled bulk loads (CRM extracts, warehouse tables) with higher latency; streaming sends records as they happen (web events, booking updates) for near real-time use cases.

How does website data reach AEP?

Web SDK (usually through Tags) sends XDM events to the Edge Network; the datastream routes them to the AEP dataset and other services like Analytics.

A date arrives in the wrong format. How do you fix it?

Use a Data Prep calculated field (date functions) in the mapping step so it is converted to the XDM date-time format during ingestion.

A batch failed overnight. How do you troubleshoot it?

Open the dataflow run, read the error diagnostics, check failed rows against the schema (types, required fields, formats), fix mapping or source, then re-run.

What is partial ingestion?

An option that ingests the valid rows of a batch and rejects the invalid ones up to an error threshold, instead of failing the whole batch.

How quickly is streamed vs. batch data available?

Streamed data is available to Profile within minutes; batch data depends on the schedule and processing, so it is slower.

Can you query the Profile store with Query Service?

Not directly. Query Service reads datasets in the data lake; profile data can be analysed through profile snapshot exports.

Write a query that finds duplicate order IDs.

SELECT commerce.order.purchaseID, COUNT(*) FROM orders GROUP BY 1 HAVING COUNT(*) > 1;

How do you prove the ingestion is correct?

Reconcile row counts with the source, check nulls and duplicates on key fields, and spot-check 20 to 30 known customers in the profile viewer.

How does AEP link an anonymous visitor to a logged-in customer?

When an event carries both the ECID and a known ID (e.g. CRMID at login), Identity Service links them in the graph, so earlier anonymous activity joins the known profile.

What causes graph collapse and how do you prevent it?

Shared devices, shared emails and junk values. Prevent it with unique namespaces and namespace priority, and by never sending placeholder IDs.

Identity graph vs. merge policy?

The graph decides which identities belong to one person; the merge policy decides how their profile fragments and conflicting attribute values are combined.

Walk me through your AEP go-live checklist.

Signed-off QC in Dev, package and import to Prod, recreate connections, run first Prod loads, reconcile counts, verify profiles and consent, confirm alerts, then hand over runbooks.

How do you promote changes from Dev to Prod?

Sandbox tooling packages for schemas, datasets and other supported objects, followed by validation in Prod.

What do you monitor during hypercare?

Dataflow failures, ingestion lag, profile counts, identity graph health and audience sizes, daily for the first two to four weeks.

Build 2 · Adobe Analytics 36

What is an SDR?

The Solution Design Reference: the master document mapping business requirements to Analytics variables, events and implementation details.

How do you turn a business question into tracking?

Define the KPI, decide the metric (success event) and dimensions (eVars/props) needed to answer it, and document where each is set.

One global suite or many suites?

One global suite with virtual report suites is usually easier to govern; separate suites make sense only when data must be kept apart.

What is a virtual report suite?

A view of an existing report suite filtered by a segment, with its own settings, used to give teams their own reporting without separate data collection.

Why do time zone and currency matter at setup?

Data is processed in the suite's time zone and currency; getting them wrong distorts daily trends and revenue.

Global report suite pros and cons?

Pros: one implementation and cross-site view. Cons: shared variable slots and settings must suit every site.

Prop vs. eVar?

A prop applies only to its own hit; an eVar persists and can take credit for later success events, based on allocation and expiration.

When would you still use a prop?

For hit-level values you want to path or correlate, and as a backup copy of an eVar value for hit-level analysis.

What is a list prop?

A prop that holds several delimited values in one hit, each reported as a separate line item.

Explain eVar allocation and expiration.

Allocation chooses which value gets credit when it changes (most recent, original); expiration decides when the value stops persisting (visit end, a time period, or an event such as purchase).

What is a merchandising eVar?

An eVar that binds its value to products in the products string, so credit is given per product (e.g. which search term found each product bought).

Campaign code eVar: which settings?

Usually most recent allocation with an expiration of around 30 days or until purchase, matching the attribution window agreed with marketing.

What is event serialization?

Passing a unique ID with an event so Analytics counts it only once, preventing double counting on page refreshes.

Describe the products string.

A semicolon-separated string per product: category; product; quantity; price; product-specific events; merchandising eVars. Several products are separated by commas.

Counter vs. numeric vs. currency event?

Counter adds 1 each time; numeric adds a number you pass (e.g. seats); currency adds a monetary value converted to the suite's currency.

Bot rules vs. IP exclusion?

Bot rules filter known and custom bots into bot reports; IP exclusion drops hits from given IP ranges entirely.

How would you handle employee traffic?

Either exclude office IPs (gone from reports, though still in Data Feeds) or flag internal traffic in a variable and filter it with a segment or virtual report suite.

Can excluded data be brought back into reports?

No. Exclusion is not retroactive and excluded hits never return to reports, though they remain in Data Feeds with an exclude_hit flag. Test rules before turning them on.

How does Web SDK data become Analytics variables?

The Edge Network translates XDM fields into Analytics variables: some automatically, others through the Analytics field group or the data object, plus processing rules.

s.t() vs. s.tl()?

s.t() sends a page view; s.tl() sends a link-tracking call that does not increment page views.

Your page views doubled after a release. What happened?

Most likely two page-view calls per page, for example a rule firing twice or both AppMeasurement and Web SDK sending; confirm in Debugger.

What are processing rules used for?

Mapping context data or Web SDK fields to variables, cleaning values and setting variables based on conditions, without changing site code.

Can processing rules fix historical data?

No. They run at collection time; to correct history you need classifications or reprocessing approaches.

Processing rules vs. VISTA rules?

Processing rules are self-service in the admin console; VISTA rules are server-side rules built by Adobe for more complex logic.

What is a classification?

A lookup that adds attributes to a variable's values, for example tracking code to campaign name and channel.

Classification vs. processing rule?

Classifications add reporting metadata and apply to historical data; processing rules change data as it is collected and only going forward.

How do you classify thousands of campaign codes?

Use a consistent code naming convention, then upload the classification file to a classification set (or automate it with the API). Plan around the legacy rule builder being deprecated.

How do you validate an Analytics implementation?

Test each SDR requirement in Debugger, check data in Workspace the next day, and reconcile orders and revenue with the backend.

Analytics shows fewer orders than the backend. Why?

Ad blockers, consent opt-outs, the confirmation page not firing, or bot filtering; quantify the gap and agree an accepted variance.

What QA tools do you use?

Experience Platform Debugger, browser developer tools, Assurance for Web SDK, and real-time or Workspace reports.

Hit vs. visit vs. visitor container?

Hit includes only matching hits; visit includes whole visits containing a match; visitor includes everything from people who ever matched.

How would you build a booking funnel report?

A fallout visualization in Workspace with search, select flight, passenger details, payment and confirmation steps.

How do you calculate AOV?

A calculated metric: Revenue divided by Orders.

What are Data Feeds?

Scheduled exports of raw, hit-level Analytics data to cloud storage for analysis in other tools.

Why do Data Feed counts differ from Workspace?

Workspace applies processing, bot filtering and visit logic; in feeds you must use post columns and exclude hits yourself to match.

How do you keep an implementation governed?

An owner per variable in the SDR, change control for new variables, periodic audits and privacy labels for personal data.

Build 3 · Launch (Tags) 33

Why use a data layer instead of scraping the page?

Scraping breaks when the page design changes; a data layer is a stable, documented contract for every value you track.

How does the Adobe Client Data Layer work?

Pages push event objects to window.adobeDataLayer; listeners (and Tags rules) react to each push, and the layer keeps the full state and history.

What goes in a data layer spec?

Every object (page, user, product, cart, event), each field with type and example, when it is set, and which tag uses it.

What is a datastream?

Edge Network configuration that receives Web SDK events and forwards them to the services you enable, with the IDs (report suites, sandbox, dataset) for each.

Why one datastream per environment?

So development and staging traffic goes to test report suites and sandboxes, keeping production data clean.

Can one Web SDK call feed both Analytics and AEP?

Yes. The datastream forwards the same event to the Analytics service and the AEP dataset at once.

What is a tag property?

The container in Tags that holds the configuration for one site or app and is published as a library through environments.

Why separate embed codes per environment?

So the dev site loads the dev library and production loads only approved, published code.

Web vs. mobile property?

Web properties deliver a JavaScript library to browsers; mobile properties configure the Mobile SDK in native apps.

Web SDK vs. AppMeasurement?

Web SDK sends one XDM call to the Edge Network for every Adobe product; AppMeasurement sends Analytics-only beacons straight to Analytics.

Which extension is mandatory?

Core. It provides page load, click and custom code events, plus base data element types.

How would you migrate from AppMeasurement to Web SDK?

Build the XDM schema and datastream, add the Web SDK extension, map data elements to XDM, run both in parallel and reconcile, then retire the old extension.

What is a data element?

A reusable variable in Tags that returns a value from the page, used by rules and extensions.

How do you read a data element in custom code?

With _satellite.getVar('Data element name').

What does storage duration do?

It keeps the last value for the page view, session or visitor, so later pages can reuse it when the source is no longer present.

What are the parts of a rule?

Events that trigger it, conditions and exceptions that filter it, and actions that run, such as sending a Web SDK event.

How do you prevent duplicate tracking?

Give each user action exactly one rule, use precise conditions, and verify in Debugger or Assurance that one beacon fires.

Direct call rule vs. data layer event?

A direct call rule fires on _satellite.track() from site code; a data layer event rule reacts to a push to the data layer. Data layer events keep site code decoupled.

How do you handle consent with Web SDK?

Configure default consent in the extension, then call setConsent with the visitor's choice from the CMP; Web SDK holds or sends data accordingly.

What does default consent "pending" mean?

Events are held locally until the visitor makes a choice; they are sent if consent is given and discarded if not. The default setting is "in"; "out" discards everything.

How do you test consent?

Opt out in each region and confirm in Debugger that no calls fire for the blocked categories, then opt in and confirm they do.

How do changes get from Tags to the website?

Add changed resources to a library, build it to Development, test, submit to Staging, approve, then publish to Production.

What is in a library?

The set of changed rules, data elements and extensions that will be built and deployed together.

Two people edit the same rule. What happens?

The last saved revision is what goes into a library; coordinate through separate libraries and review changes before building.

How do you validate a Web SDK implementation?

Use Debugger to inspect the XDM payload of each call, Assurance to follow it through the Edge Network, and check the data lands in the AEP dataset and Analytics.

A rule is not firing. How do you debug it?

Turn on Tags debug mode, check the console for the rule's event and conditions, confirm data elements return values, and check the right library is loaded.

Debugger vs. Assurance?

Debugger is a browser extension for what the page sends; Assurance is a session-based tool that shows what Adobe received and processed.

What is the Tags publishing flow?

Development, then Submitted and built to Staging, then Approved, then Published to Production.

How do you roll back a bad release?

Republish the last good library if it is one of the five most recent (Adobe-managed host, Archive off); otherwise create a new library that reverts the changes. Then fix in Development.

What do you check right after a production publish?

That key rules fire once, beacons reach Edge or Analytics, page speed is unchanged, and no errors appear in the console.

How do you keep a Tags implementation healthy?

Regular audits against the spec, monitoring for errors and missing data, and a review step in every site release.

What would you put in a tag audit?

Each rule's purpose and owner, firing tests on every template, unused rules and extensions, and consent gating checks.

A KPI dropped to zero after a site release. What do you do?

Check whether the data layer field or page element changed, confirm in Debugger, fix the data element or rule, and annotate the data gap.

Build 4 · Marketo 36

What is lead scoring?

Adding points for fit (job title, industry) and behaviour (visits, downloads) to decide when a lead is ready for Sales.

How do you define an MQL?

A lead whose combined fit and behaviour score passes a threshold agreed with Sales, plus any required fields.

Why agree lifecycle stages with Sales?

Handoffs only work if both teams use the same definitions and SLAs.

Workspace vs. partition?

Workspaces separate programs and assets between teams; partitions separate the people database, e.g. by region.

Why set communication limits?

They cap how many marketing emails a person receives per day and week, protecting engagement and reputation.

Who should have send permissions?

Only trained marketing operations users; others build drafts for review.

What are SPF and DKIM?

SPF lists servers allowed to send for your domain; DKIM signs emails so receivers can verify they were not altered.

Why brand tracking links?

Links on your own domain look trustworthy and improve deliverability compared with generic tracking domains.

Emails go to spam. What do you check?

Authentication (SPF, DKIM, DMARC), list quality, complaint and bounce rates, and content.

What is Munchkin?

Marketo's web tracking script that logs page visits and link clicks and ties them to a lead once identified.

How does an anonymous visitor become known?

By submitting a Marketo form or clicking a tracked link in a Marketo email, which associates the cookie with the lead.

How would you deploy Munchkin?

Through Tags with a consent condition, on every page of the site.

How does Marketo-Salesforce sync work?

A dedicated sync user connects the systems; each sync cycle runs and then pauses five minutes. Leads, contacts and Salesforce campaigns sync both ways; accounts, opportunities and custom objects come from Salesforce only.

What do you decide before enabling sync?

Fields to sync and their direction, which records sync, field mappings, and duplicate handling.

Why use a dedicated sync user?

It controls exactly what Marketo can see and edit in the CRM and keeps changes traceable.

How do you keep Marketo data clean?

Standard picklists, normalization campaigns, duplicate management and field ownership rules.

What is a source of truth for a field?

The system that wins when values conflict, e.g. CRM for account owner, Marketo for email engagement.

Why normalize job titles?

So scoring and segmentation can use a small set of job levels and functions instead of thousands of free-text titles.

Smart list vs. static list?

A smart list updates automatically from its rules; a static list is a fixed set of people you add or remove.

Trigger vs. batch smart campaign?

Trigger campaigns run for each person when an activity happens; batch campaigns run for everyone matching the list at a set time.

What is a segmentation?

A set of mutually exclusive segments (e.g. by industry) used to personalize emails and landing pages with dynamic content.

How do you build a scoring program?

Trigger campaigns that change behaviour and fit scores on activities and data changes, in an operational program.

What is score decay?

Reducing behaviour scores over time for inactivity so the score reflects current interest.

A lead is MQL but Sales rejects it. What next?

Move it to a recycled stage, record the reason, and use the feedback to tune scoring.

What are tokens?

Placeholders that insert program values (dates, links) or person fields into emails and pages.

What is progressive profiling?

Showing new form questions to returning visitors instead of asking for everything at once.

How do you test an email?

Send samples, preview with real lead data, check rendering across clients, and verify links and tracking.

What is an engagement program?

A nurture program that sends content in streams on a cadence, moving people between streams as they engage.

How do people leave a nurture?

Exit rules (e.g. became MQL, opted out) or by running out of content in their stream.

How do you measure nurture success?

Engagement scores, progression to MQL and SQL, and pipeline influenced.

How do you QA a Marketo launch?

Run test leads through each flow, check email rendering, CRM sync, scoring changes and unsubscribe handling.

Where do you debug a campaign?

In the lead's activity log and the smart campaign's results tab.

A lead did not get an email. Why?

They did not qualify for the smart list, were blocked by communication limits, unsubscribed, or the email bounced.

Why do program statuses matter?

Consistent statuses (sent, engaged, success) make programs comparable and power attribution reporting.

Which metrics show marketing's value to Sales?

MQL-to-SQL conversion, pipeline created and revenue influenced by programs.

How do Marketo and AEP work together?

The Marketo source connector brings people and activities into AEP, and audiences can flow back to Marketo.

Build 5 · RTCDP 33

What has to be in place before you build audiences in RTCDP?

Validated schemas and identities, Profile-enabled datasets with data flowing, merge policies agreed, and consent attributes populated.

How does RTCDP relate to AEP?

RTCDP is an application built on AEP: it uses AEP's profiles and identity graph to build audiences and activate them to destinations.

What would you check if audience sizes look too high?

Over-merged identity graphs, the wrong merge policy, duplicate datasets, or a missing exclusion such as consent.

How do you enforce marketing consent in RTCDP?

Capture consent in the profile, then enforce it with consent policies where licensed, or exclude non-consented profiles in every audience used for activation.

Opt-in vs. opt-out regions: how does design change?

Opt-in regions need explicit consent before marketing; opt-out regions allow it until the person objects. Store region and consent status so audiences can apply the right rule.

Where is consent stored in XDM?

In consent and preference fields on the profile (for example the Consents and Preferences field group), updated from the CMP or preference centre.

What is a merge policy?

Rules for assembling a profile: whether to stitch identities via the graph, and how to resolve conflicting attribute values from different datasets.

Timestamp ordered vs. dataset precedence?

Timestamp ordered keeps the most recently updated value; dataset precedence trusts datasets in the order you rank them (e.g. CRM over web forms).

When would you use "None" for ID stitching?

When each identity must stay separate, for example in regulated cases where profiles must not be joined through the graph.

How would you build a cart abandonment audience?

People with an add-to-cart event in the last hour and no purchase event after it, excluding anyone without marketing consent.

Attributes vs. events in audience rules?

Attributes describe who someone is (tier, country); events describe what they did (searched, purchased), usually with a time window.

How do you validate an audience?

Check the estimated size against benchmarks, inspect sample profiles that qualify, and test with a small export.

Batch vs. streaming vs. edge segmentation?

Batch: scheduled, all rule types. Streaming: near real time on incoming events, with rule limits. Edge: instant decisions at the edge for web personalization, with stricter limits.

Which method for a flight-delay alert?

Streaming (or an AJO event-triggered journey), because the message is only useful within minutes.

Why might an audience not be eligible for streaming?

Its rules use unsupported constructs, such as long multi-event look-backs or certain functions, so it falls back to batch.

What is a data usage label?

A tag on a dataset or field that says how the data may be used, for example a sensitive or contractual restriction.

How does policy enforcement work at activation?

When you map an audience to a destination, Platform checks the labels on the data involved against the destination's marketing actions and blocks violations.

How do you test governance?

Deliberately try an activation that should be blocked and confirm the policy stops it.

Streaming vs. batch destinations?

Streaming sends audience changes continuously (ad platforms, Target); batch exports files on a schedule (cloud storage, email tools).

Why hash emails for ad destinations?

Ad platforms match on hashed identifiers so raw PII is never shared; Platform can hash on export where supported.

What do you check before connecting a destination?

Licence, authentication, identity requirements, required fields, rate limits and the marketing actions to apply.

Walk me through activating an audience.

Select the destination, choose audiences, set schedule, map identities and fields, review governance checks, then activate and monitor the dataflow.

What happens if a profile leaves an audience?

For streaming destinations the exit is sent so the platform can remove the person; for file exports the next file reflects the change.

How do you activate to Adobe Target?

Through the Target (personalization) destination, which shares audiences with Target via the Edge for on-site personalization.

Why test with a small audience first?

To catch mapping, hashing and consent errors before thousands of real customers are affected or ad spend is wasted.

Match rate is low on an ad destination. Why?

Few profiles have the identity the platform needs, emails were not normalised before hashing, or consent excluded most profiles.

How do you validate an export?

Compare the exported file or received audience with expected counts and inspect sample records field by field.

How do you stop advertising to people who just bought?

Build a recent-purchaser suppression audience and exclude it from the ad audience before activation.

Where do you control message frequency?

In the delivery channel, e.g. AJO business rules for email and push, and in the ad platform's own frequency settings.

What is an audience exclusion?

A rule (or separate audience) that removes certain profiles, such as non-consented or suppressed customers, from an audience before activation.

What do you monitor after launching audiences?

Destination dataflow success, failures, match rates, audience size trends and governance violations.

An audience doubled overnight. What do you check?

Recent ingestion changes, identity graph merges, merge policy changes and whether a source loaded duplicate data.

What goes in the closure handoff for RTCDP?

Audience catalog with owners, destination matrix, governance documentation and runbooks for failed activations.

Build 6 · AEM 33

Headful vs. headless AEM?

Headful renders pages in AEM; headless serves structured content (content fragments) over APIs to apps and other front ends.

What goes into AEM architecture planning?

Site structure, templates, component catalog, content models, languages, integrations and environments.

How do you plan for many languages?

Use language copies and live copies (multi-site manager) with translation workflows defined up front.

Author vs. publish tier?

Author is where content is created and reviewed; publish delivers the approved content to visitors.

What is Cloud Manager?

Adobe's service for managing AEM Cloud Service programs, environments, Git repositories and CI/CD pipelines.

What does the dispatcher do?

It caches and filters requests in front of the publish tier, protecting it and speeding up delivery.

How is code deployed to AEM Cloud Service?

Commit to the Cloud Manager Git repo (or a linked repo) and run a pipeline that builds, tests, checks quality and deploys.

Full-stack vs. front-end pipeline?

Full-stack deploys back-end, front-end and web-tier config together (one per environment); front-end pipelines deploy only CSS and JavaScript themes, and several can run at once. There are also web tier config, config (CDN, log forwarding) and Edge Delivery config pipelines.

What is the AEM project archetype?

A Maven template that generates a best-practice AEM project structure with core components.

How do you create a new site in AEM?

From a site template or from your project's templates, defining the root, languages and initial pages.

Why do page names matter?

They become URLs; renaming later causes broken links and needs redirects.

What is a site template?

A packaged starter for a site: theme, templates and sample content.

Editable vs. static templates?

Editable templates are built in the template editor by authorized users and can change without code; static templates are defined in code by developers.

What is a content policy?

A configuration on a template that sets which components are allowed in a container and their design settings.

How do you stop authors breaking the layout?

Lock structural components in the template and allow only approved components through policies.

What are Core Components?

Adobe-maintained, production-ready components (title, text, image, teaser and more) that projects extend through proxies.

What is the proxy component pattern?

Your project creates a component that inherits from a Core Component, so you get upgrades while customizing.

What does the Style System do?

It exposes CSS-based style variations of a component for authors to choose, without new code.

Content Fragment vs. Experience Fragment?

A Content Fragment is structured content without layout (for any channel); an Experience Fragment is a reusable, designed piece of a page.

How do you deliver content to a mobile app from AEM?

Model it as Content Fragments and deliver it through the GraphQL API (headless).

How does AEM work with Target?

Experience Fragments can be exported to Target as offers for tests and personalization.

What is a DAM and why does it matter?

A digital asset management system: a single governed library for images, video and documents, used across channels.

How would you organize assets for an airline?

By brand, campaign and asset type, with metadata for destination, rights and expiry, and consistent tags.

What are renditions?

Automatically generated versions of an asset (sizes, formats) for different uses.

How do you set up content approval?

A workflow that routes pages to reviewers and approvers before activation to publish.

Why manage permissions by group?

It scales and is auditable; individual permissions become impossible to manage.

How would healthcare content be governed?

A mandatory medical/legal review workflow and restricted groups for regulated sections.

How do you add Tags to AEM?

Create an Adobe IMS integration and a Tags (Launch) Cloud Services configuration, then apply it to the site so pages load the property.

How does AEM support analytics tracking?

Core Components can populate the Adobe Client Data Layer, which Tags rules read to send data.

How do AEM and Target work together?

Through the Target integration and Experience Fragment export, so authors' content becomes Target offers.

What is on your AEM go-live checklist?

Content freeze, final QA (accessibility, SEO, performance), redirects, DNS/CDN cutover, cache checks and author training.

Content was published but visitors see the old version. Why?

Cached content at the dispatcher or CDN; check invalidation and cache rules.

How do you check accessibility?

Automated scans plus manual checks of keyboard navigation, alt text, headings and colour contrast against WCAG.

Build 7 · Target 33

How do you build a testing roadmap?

Collect ideas from data and stakeholders, write hypotheses, score them (impact, confidence, effort), check traffic, then schedule.

What makes a good hypothesis?

A specific change, a target audience, an expected effect on a named metric, and the reason you expect it.

How do you know if you have enough traffic?

Use a sample size calculator with baseline conversion, minimum detectable lift and confidence level.

at.js vs. Web SDK for Target?

at.js calls Target directly; Web SDK sends one Edge call that returns Target decisions alongside other services. Web SDK is the strategic path.

What causes flicker and how do you fix it?

Default content renders before Target's changes apply; fix it with a pre-hiding snippet and loading the library early in the head.

How does Target work on a single-page app?

Views are triggered on route changes (e.g. triggerView in at.js or the equivalent Web SDK call) so Target applies the right experience.

What are properties and workspaces in Target?

Properties scope activities to channels or sites; workspaces group properties and users so teams only see and edit their own work.

Who should be allowed to activate tests?

Only approvers or publishers, after QA sign-off, to avoid untested experiences going live.

Why does this matter for a multi-brand airline?

Each brand team can work independently without touching another brand's live tests.

Where can Target audiences come from?

Target's own rules (browser, location, parameters), Analytics segments, and AEP/RTCDP audiences shared via the Target destination.

Two activities target the same page and audience. What happens?

Priority decides which experience a visitor gets; conflicting activities should be resolved before launch.

How would you target loyalty Gold members?

Share a Gold-tier audience from RTCDP to Target, or use a profile attribute passed in the Target call.

A/B test vs. Experience Targeting?

A/B splits traffic randomly to compare experiences; Experience Targeting shows each defined audience its own experience without a random split.

When would you use Auto-Allocate?

When you want to send more traffic to the winning experience as soon as it starts winning, rather than waiting for a fixed split to finish.

VEC vs. form-based composer?

VEC edits the page visually; form-based delivers code or JSON offers to locations, useful for SPAs, apps and server-side.

Why keep a control?

Without an unchanged baseline you cannot measure lift.

Test five changes at once in one experience?

Only if you accept you will not know which change caused the result; otherwise use separate tests or an MVT.

How do you build an experience for an SPA?

Use the form-based composer or VEC with views, delivering changes when the relevant view loads.

How do you split traffic?

Set the allocation per experience (often 50/50 for two experiences) and the share of the eligible audience entering the activity.

Why not send 90% to the variant?

It slows learning about the control and increases risk if the variant is worse; use Auto-Allocate if you want adaptive traffic.

How do you keep employees out of results?

Exclude by audience (IP or internal flag) and use QA links for testing; remember QA hits still reach Analytics when A4T is the reporting source.

What is A4T?

Analytics for Target: using Adobe Analytics as the reporting source, so any Analytics metric or segment can be used to analyse the test.

Why not stop a test as soon as it looks significant?

Peeking inflates false positives; run until the planned sample size and full business cycles are reached.

What secondary metrics would you track on a booking test?

Revenue per visitor, ancillary attach rate and drop-off at payment, to make sure the primary win is not hurting something else.

How do you QA a Target activity?

Use activity QA links for each experience, check rendering on devices, confirm metrics fire in Debugger, and verify audience rules.

Do QA visits count in reports?

Not in Target's live report; QA traffic is kept separate. With A4T, though, QA hits are sent to the live Analytics report suite, so segment them out.

What is the most common Target QA issue?

Flicker or a goal metric that never fires, which makes the test unreadable.

What do you check right after activation?

Visitors entering each experience, an even split, metrics recording, and no errors or performance drop.

The split is 70/30 instead of 50/50. Why?

Caching, a broken experience, audience rules or redirect issues; investigate before trusting results.

When would you pause a live test?

If it breaks checkout or booking, shows wrong prices, or causes a large drop in a guardrail metric.

How do you read a test result?

Check the primary metric's lift and confidence, confirm sample size, review secondary metrics, then look at key segments.

A test is flat. Is that a failure?

No. It shows the change does not matter, saving development effort; record it and move on.

What happens to a winning experience?

Ship it permanently through the site code or keep it in Target as an Experience Targeting activity while development catches up.

Build 8 · AJO 33

Journey vs. campaign in AJO?

A journey orchestrates multi-step, event- or audience-triggered flows per person; a campaign sends one message to an audience on a schedule or via API.

Transactional vs. marketing message?

Transactional messages relate to something the customer did or owns (booking, delay) and can go to people who opted out of marketing; marketing messages need marketing consent.

What KPIs would you set for a cart abandonment journey?

Recovered revenue, conversion rate of entrants, and unsubscribe/complaint rates, compared against a holdout.

What does AJO need from AEP?

Profile-enabled schemas and datasets, a consistent identity namespace, consent attributes, and the events and audiences that trigger journeys.

Why does the namespace on an event matter?

AJO uses it to find the profile; if the event carries a different identity than the journey expects, the person never enters.

How do you check data readiness?

Look up test profiles, send test events and confirm they arrive with the right identity and fields within the expected latency.

Full subdomain delegation vs. CNAME?

With full delegation Adobe manages the DNS records for the subdomain; with CNAME the client keeps DNS and points records to Adobe. Full delegation is simpler to maintain.

What is IP warm-up?

Gradually increasing volume from new IPs so mailbox providers learn to trust them, avoiding spam-foldering.

Why separate IP pools?

So a marketing campaign's complaints or bounces do not damage delivery of critical transactional messages.

What is a channel configuration?

The reusable sending setup for a channel (sender, subdomain, IP pool, message type) that messages and journeys select.

What do you need for push notifications?

The mobile app configured with the Mobile SDK and push credentials, plus a push channel configuration in AJO.

How do you prevent marketing emails going to opted-out customers?

Use marketing-type configurations, which respect marketing consent, and keep transactional configurations for genuine service messages.

Unitary vs. business event?

A unitary event triggers a journey for one person; a business event triggers a journey that reads an audience, e.g. everyone booked on a delayed flight.

How would you model a flight delay alert?

A business event "flight delayed" with flight number and date, then a Read Audience step to target passengers booked on that flight.

An event fires but nobody enters the journey. Why?

Wrong identity namespace, event ID or rule mismatch, the person is not on a profile-enabled schema, or re-entrance rules block them.

How do you personalize an email in AJO?

Insert profile or event attributes with the expression editor, add conditional content for segments, and set defaults for missing values.

Why use fragments?

A change to a shared fragment (like a footer) updates every message that uses it, saving time and keeping content consistent.

How do you use journey context in a message?

Reference attributes from the triggering event, such as flight number or cart items, in the message through the expression editor.

Walk me through building an abandoned-cart journey.

Entry on the cart event, wait one hour, an Optimize (conditions) step for "no purchase since", send email, wait 24 hours, check again, send push, exit on purchase.

How do you change a live journey?

Create a new version, edit and test it, then publish; profiles already in the old version finish in that version.

What is re-entrance?

A setting that controls whether a profile can enter the same journey again and the waiting period before it can.

How do you cap message frequency in AJO?

Create business rule sets with channel caps (e.g. three marketing emails a week) and apply them to journeys and campaigns.

What is the suppression list?

Addresses AJO will not send to, such as hard bounces and spam complaints, maintained automatically.

How do you stop a promo going to someone mid-trip?

Exclude an "in-trip" audience in the journey condition or audience, and apply frequency rules to marketing only.

How do you test a journey?

Use test profiles in test mode, trigger the entry event, follow each branch, send proofs, and check the journey report.

What is a test profile?

A profile flagged as a test profile so it can be used in journey test mode and message proofs.

Test mode vs. dry run?

Test mode runs the journey for test profiles and sends real messages to them; dry run uses production data to check paths without sending anything.

What do you monitor after publishing a journey?

Entries, exits, errors per step, delivery and open rates, bounces, complaints and conversions against the KPI.

Where can you analyse journey performance beyond AJO reports?

In CJA or Query Service, using the journey step event and message feedback datasets written to AEP.

Bounce rate is high on launch. What do you do?

Pause or slow sending, check list quality and authentication, clean bounced addresses, and review IP warm-up.

How do you prove a journey works?

Compare the conversion of people who received it with a randomly held-out control group.

What is Decisioning in AJO?

Rules, eligibility and ranking that choose which decision item (offer) to show each person from a catalogue. It replaces the older Decision management (offer decisioning), which is now legacy.

What would you optimise first in a weak journey?

Entry criteria and timing, then subject lines and content via experiments, then channel mix.

Build 9 · CJA 33

CJA vs. Adobe Analytics?

Analytics collects and reports web/app data with fixed variables; CJA reports on any AEP dataset across channels, with reporting-time settings and no variable limits.

What questions is CJA good for?

Cross-channel journeys: e.g. how many travellers searched online, called the contact centre, then booked in the app.

What decides which datasets go in?

The agreed analysis questions; add only datasets those questions need, since rows count toward the licence.

What dataset types can a CJA connection use?

Event datasets (time-series), profile datasets (attributes per person) and lookup datasets (attributes per key such as product).

Why must person IDs line up across datasets?

CJA joins datasets on the person ID; if web uses ECID and the call centre uses CRMID with no link, journeys cannot be combined.

What is a lookup dataset?

A dataset that classifies a value, like product SKU to category, joined at reporting time.

What is a CJA connection?

The configuration that brings selected AEP datasets into CJA, with a person ID per dataset and import/backfill settings.

Connection vs. data view?

The connection decides which data comes in; the data view decides how it is reported (components, sessions, attribution).

How do you control CJA cost?

Limit datasets and backfill to what the use cases need and monitor ingested rows.

How do you check a connection is complete?

Compare ingested and skipped rows in the connection details with dataset row counts in AEP.

Why might rows be skipped?

Missing person ID or timestamp, or records outside the import settings.

How fresh is CJA data?

It depends on ingestion lag; streaming data arrives faster than batch, and recent hours may still be filling in.

What is a data view?

A reporting configuration on top of a connection that defines components, sessions, attribution and context.

Why is "retroactive" a big deal?

You can change session timeouts, attribution or component settings and history updates instantly, which Adobe Analytics cannot do for most settings.

What are derived fields?

Dimensions or metrics created at reporting time with rules and functions, without re-ingesting data.

How do you make a CJA dimension behave like an eVar?

Set persistence on the component in the data view (e.g. most recent value for the session or a time period).

Are there variable limits like Analytics' eVars?

No fixed eVar/prop slots; any schema field can be a component.

How do you count orders in CJA?

Create a metric component from the purchase event field or an event-type value, with counting settings as needed.

What is stitching in CJA?

Rewriting the person ID on anonymous events with the known ID once the person is identified, so pre-login behaviour joins the customer.

Field-based vs. graph-based stitching?

Field-based uses two fields in the same dataset (device ID and person ID; Select package and up); graph-based uses the AEP identity graph (Prime and up). Both are now enabled self-service in the Connections UI.

How do you compare attribution models?

Use the Attribution panel or apply different models to metrics side by side in a freeform table.

Event vs. session vs. person container?

Event keeps matching rows only; session keeps whole sessions with a match; person keeps everything from people who matched.

Build a "search to booking rate" metric.

A calculated metric: bookings divided by searches, optionally within a session filter.

Why might CJA numbers differ from Analytics?

Different sessions and stitching, data view settings, bot filtering, and data sources included.

How would you show the trip lifecycle in CJA?

A flow or fallout from search to booking to check-in to post-trip survey, broken down by channel.

How do you share insights?

Share Workspace projects, schedule PDF/CSV deliveries, or export to BI tools such as Tableau.

What is a cohort table used for?

Tracking retention or repeat behaviour of groups who started in the same period.

How does CJA "close the loop"?

By creating audiences in CJA and publishing them to AEP, where RTCDP or AJO can activate them.

How do you measure an AJO journey in CJA?

Add the journey step event and message feedback datasets to the connection and report on them with conversions.

Why measure Target tests in CJA?

To see test impact across channels and over longer periods than the test report shows.

How do you control who sees what in CJA?

Assign data views to product profiles in Admin Console and give users only the profiles they need.

What goes in CJA governance?

Data dictionary, component naming rules, project catalog, access model and regular usage reviews.

What do you monitor after go-live?

Ingestion lag, skipped rows, data view errors and licence usage.

Phases 1–4 12

What is an RFP and how would you respond to one?

A client document describing need, scope and evaluation criteria. A response covers understanding of the problem, approach, team, timeline, assumptions and cost.

What do you confirm at project kickoff?

Sponsor, decision makers, licences and packages, sandboxes, systems in scope, success criteria and the communication cadence.

Why do licences matter so early?

They decide which features, data volumes and destinations are available, so scoping without them leads to promises the product cannot keep.

What goes into a current-state assessment?

An audit of existing tools, tags, data flows, identities, consent and pain points, with evidence such as Debugger captures and data samples.

What is a future-state blueprint?

The target architecture: how data will flow from touchpoints through collection, AEP and applications to activation, plus a capability roadmap.

How do regulations change discovery in healthcare or banking?

You confirm what data is allowed (PHI, KYC), required agreements such as a BAA, and access controls before designing anything.

What makes a good SOW?

Clear scope and out-of-scope, deliverables tied to milestones, assumptions, client responsibilities, timeline, team and price.

How do you estimate an AEP implementation?

Count sources, schemas, use cases, destinations and environments, apply effort per item from past projects, then add QA, hypercare and contingency.

What do you do when the client asks for more mid-project?

Log it, assess impact on time and cost, and handle it through a change request rather than absorbing it silently.

SDR vs. SDD?

The SDR maps business requirements to technical configuration (variables, schemas, fields); the SDD describes the technical design: architecture, data flows, environments, integrations and naming.

Who signs off design and why does it matter?

The client sponsor and technical owners. Sign-off freezes scope for the build, so later changes go through change control.

How do you design identity for an airline?

Loyalty ID as the main person ID, plus email, phone and ECID; booking references stay as fields, and agents' shared emails are excluded from stitching.

Phases 6–9 5

What happens in UAT?

Business users test agreed scenarios against acceptance criteria in a production-like environment, log defects, and sign off when criteria are met.

What is in a go-live plan?

Cutover steps and owners, timing, rollback plan, communication, smoke tests after launch and who approves go/no-go.

What is hypercare?

A 2–4 week period of heightened support after go-live where the delivery team monitors daily and fixes issues before steady-state support takes over.

What goes into a handoff pack?

Runbooks, final SDR/SDD, access list, training materials, open backlog and support contacts.

A critical defect appears on launch day. What do you do?

Assess impact, decide fix-forward or rollback with the sponsor, communicate, then run a root-cause review.

Skill · SQL 6

What is the difference between WHERE and HAVING?

WHERE filters rows before grouping; HAVING filters groups after aggregation, e.g. HAVING COUNT(*) > 1 for duplicates.

INNER JOIN vs LEFT JOIN?

INNER returns only matching rows; LEFT returns all left-table rows with NULLs where no match exists — useful for finding profiles with no events.

How would you validate an AEP ingestion with SQL?

Compare row counts with the source, check null rates on required and identity fields, look for duplicate IDs, and check timestamps fall in the expected range.

How do you query nested XDM fields?

With dot notation along the schema path, e.g. person.name.firstName or _tenantId.crmId for custom fields.

What is a window function and when would you use one?

It calculates across related rows without collapsing them — e.g. ROW_NUMBER to get each customer’s latest event.

What is CTAS used for in Query Service?

CREATE TABLE AS SELECT writes results to a new dataset, often scheduled, to build derived attributes for segmentation or reporting.

Skill · JSON 6

What’s the difference between an object and an array in JSON?

An object is a set of named key–value pairs; an array is an ordered list of values. A customer is an object; their orders are an array.

What would you check first in a client’s JSON file?

That it’s valid JSON, field names and types are consistent across records, dates share one format, and every record has the identity field.

How does client JSON relate to an XDM schema?

Each client field is mapped to an XDM field — standard field groups first, custom fields under _tenantId — during source mapping.

What fields does an ExperienceEvent need?

_id, timestamp and eventType, plus identity information (identityMap or an identity field) to attach it to a profile.

What is JSON Schema?

A JSON document that describes valid JSON: types, properties, required fields. XDM is built on it.

Which headers do AEP API calls need?

Authorization (Bearer token), x-api-key, x-gw-ims-org-id, and usually x-sandbox-name.

Skill · JavaScript 6

let vs const vs var?

const can’t be reassigned, let can; both are block-scoped. var is function-scoped and older — avoid it in new code.

== vs ===?

=== compares value and type with no conversion; == converts types first. Use === to avoid surprises like "1" == 1.

How do you stop a data element from throwing an error?

Use optional chaining and a default (?. and ??), or a try/catch, so missing data returns a safe fallback.

What is a Promise?

An object for a result that arrives later. alloy("sendEvent") returns one; use .then() or await to handle the response.

When would you use a direct-call rule?

When the site needs to trigger tracking explicitly from code (e.g. an SPA view change) with _satellite.track("name").

How do you debug a beacon that isn’t firing?

Enable _satellite.setDebug(true), check the rule’s conditions and consent, look for console errors, and confirm the call in the Network tab or Assurance.

Skill · Tableau 6

Dimension vs measure?

Dimensions are categories you group by (channel, date); measures are numbers you aggregate (visits, revenue).

What are LOD expressions?

Calculations at a fixed level of detail independent of the view — FIXED, INCLUDE and EXCLUDE — e.g. first purchase date per customer.

Live connection vs extract?

Live queries the source each time (always current, can be slower); an extract is a snapshot copy (fast, needs scheduled refresh).

Your Tableau numbers don’t match CJA — what do you check?

Date range and time zone, filters/segments applied, metric definitions, and whether the export was sampled or truncated.

How do you make a dashboard interactive?

Filters, parameters and dashboard actions (filter/highlight actions) so selecting one view updates the others.

How would you get Adobe data into Tableau at scale?

Use a warehouse fed by Analytics Data Feeds or AEP dataset exports, then connect Tableau live or via scheduled extracts.