Shape the data › Classifications
Troubleshooting and Maintenance
There is no error message in this section.
Every troubleshooting guide you have ever read opens with something going red. A failed job. A broken build. A stack trace, a 500, a console full of warnings. Something that stands up and announces itself.
Classifications do not do that. A broken classification produces a report. A complete, well-formatted, perfectly plausible report, with totals that reconcile and columns that add up and a chart that renders beautifully. It just happens to be wrong.
Which changes what you are actually doing here. You are not debugging. Debugging is what you do when a machine tells you it is unhappy. You are auditing, which is what you do when a machine tells you nothing at all, and you have to go and find out whether it was telling the truth.
Where a classification can break
Four places, and every symptom in this section traces back to one of them.
The index
Come back to this table. That is what it is for.
| Symptom | Most likely cause | Where to look |
|---|---|---|
| Every row says Unspecified | The key is not on those hits, or nothing was ever uploaded | Check the parent dimension first. If it is empty, the classification was never the problem. |
| Some keys classified, others not | Key mismatch: an internal space, an encoding difference, a value of 0 | Download, Data Returned = All columns empty |
| One column is blank, the others are fine | That column was missing or misspelled in the file | Download, Data Returned = Any columns empty |
| Uploaded hours ago, still nothing | Processing time, or the job failed and nobody was told | Jobs tab |
| A classification exists that nobody created | A typo in a file header. Adobe created it on import, as designed. | Schema tab |
| Curated values keep reverting to raw ones | A rule is overwriting the file, every four hours | Rules tab, the Rules overwrite setting |
| Rules classify nothing at all | The key is URL encoded, so no rule can read it | Look at the raw dimension. If you see %5F, that is your answer. |
| Right column, wrong value | Two rules touch the same column, and precedence is inverted from what you assumed | Rules overwrite, then rule order |
| Old campaigns never classify, new ones do | The lookback window. Rules cannot see keys that stopped arriving. | Upload a file. A rule will never fix this. |
| History changed and nobody touched anything | A key was recycled by the source system | Not in Adobe. Go and ask the system that mints the key. |
| The set gets slower every week | Files are not being removed from the cloud location, so everything reimports on every run | The bucket, and the Jobs tab, which will show the same import over and over |
Start by checking whether it is even a classification problem
Before touching a set, look at the parent dimension.
If the club's Membership Tier report is empty, open the User ID report. If that is also empty, then no User ID was collected, nothing was there to classify, and the classification behaved perfectly. You have an implementation problem wearing a classification costume, and no amount of uploading will fix it.
This one check would resolve a large share of the classification tickets ever raised. It takes eleven seconds. People skip it because the symptom appears in a classification report, and the eye follows the symptom rather than the cause.
The mismatch family, and why they are so hard to see
Now the group that produces the most wasted afternoons. The key is there. The file was uploaded. And the row is still Unspecified.
Which means Adobe looked up your key, and did not find it, because the key in the file is not the key in the data. They look identical on a screen. They are not identical to a machine.
| What differs | What it looks like | Forgiven? |
|---|---|---|
| Trailing space | M-10482 | Yes. Trimmed automatically, on both sides. |
| Internal space | M- 10482 | No. A different key entirely. |
| URL encoding | eml%5F2026 | No. And no rule will ever read it. |
| A value of zero | 0, 00, 000 | No. It errors, for reasons that never feel satisfying. |
| An invisible BOM on the header | Key that is not quite Key | No. Save as UTF-8 without BOM. |
Two of those come from the source system and cannot be fixed in Adobe at all. If your tracking codes arrive URL encoded, no rule, no file, and no amount of cleverness inside the classification interface will save you. That is a conversation with whoever builds the campaign links, and it is better to have it on a Tuesday than during a quarterly review.
Which is where Unspecified deserves a second look
Practitioners spend their careers trying to get rid of Unspecified. It looks like failure. It looks untidy. Stakeholders ask about it.
Stop. Look at what it is actually doing.
Of the four ways a classification can break, Unspecified is the only one that tells you. It is the feature standing up and saying, out loud, that it could not resolve this key. No other failure in this module has the decency to do that. A rule overwriting your curated file does not produce Unspecified. It produces winback. A misspelled header does not produce Unspecified. It produces a whole new dimension, quietly filling with correct data under a name nobody meant.
Unspecified is the honest failure. Learn to read it and it becomes a diagnostic instrument. Suppress it, and you have blinded the one part of this system that was trying to help you.
So the goal is not zero Unspecified. The goal is a number you can explain. Unspecified holding steady at 3% because that is the share of traffic that genuinely arrives before login is a healthy report. Unspecified at 0% because somebody classified everything with a catch-all rule is a report that has stopped telling you anything.
The values are wrong, which is worse than missing
Missing data raises a question. Wrong data answers one, incorrectly, and nobody thinks to check.
Two causes, and both were built in Classification Rule Builder.
Rule precedence is inverted from your instinct. With Rules overwrite set to apply to all values, the last matching rule wins, so moving a rule to the top of the table takes its priority away. With apply to only unset values, the first wins. Same rules, same order, opposite answer. When a column holds a value you cannot account for, check that dropdown before you check anything else.
Something is fighting your file. If curated values keep reverting, a rule is rewriting them every four hours, and it will keep doing so forever. Nobody is at fault. The rule is doing exactly what it was told.
A recycled key rewrites history silently. The upload succeeds, the report renders, the totals reconcile, and two years of activity by one member is now attributed to somebody else. Nothing failed. Nothing is logged. There is no Adobe screen that will ever show you this, because from Adobe's point of view nothing went wrong.
If a historical report changes and nobody touched anything, stop looking inside Adobe Analytics. Go and ask the system that generates the key whether it reuses identifiers. That is where the answer lives, and it is the only failure in this module that Adobe genuinely cannot help you find.
Four instruments, and almost nobody uses them
Everything above is diagnosable, and the tools have been sitting in the interface the whole time.
| Instrument | Where | What it answers |
|---|---|---|
| Jobs | Components > Classification sets > Jobs | Did it actually run? Did it fail? Is the same file importing over and over? |
| Download | Schema tab > Download | What is actually in there right now, as opposed to what you believe you uploaded |
| Test rule set | Rules tab > Test rule set | What these rules would do, before they do it to production |
| Unspecified, trended | Analysis Workspace | Is coverage decaying, and in which of three distinct ways? |
The Jobs tab is the one to build a habit around. It is the only place in this entire feature where a failure is written down in plain language, and it is the first place to look when something is missing and you cannot say why. If an import silently failed at 2am, the Jobs tab knows. Nothing else does.
And Download with Data Returned set to Any columns empty is the single most useful diagnostic in the module. It turns "something feels wrong with the tier data" into a list of exactly which keys are missing exactly which columns. Vague suspicion becomes a spreadsheet you can act on.
The fourth instrument is the only one that lives outside the classification interface, and the only one that raises a problem before somebody reports it. Put Unspecified on a trend, as a percentage of whatever metric the business actually watches, and leave it somewhere it will be seen. The level is already covered above: a steady number you can explain is a healthy report. What a trend adds is the shape of the movement, and the shape names the cause.
| What the trend does | What it usually means |
|---|---|
| Steps up, then holds | A new campaign, agency, or platform started minting keys in a format no rule covers |
| Drifts up slowly | A manual upload is being skipped |
| Sits on a floor and never moves | A legacy key format nobody ever wrote a rule for, waiting quietly to be noticed |
The drift is the one worth building the habit for, because it is the one the level check cannot catch. A step is obvious to anybody who opens the report that week. A drift stays inside the band you would still call normal for months, which is comfortably long enough for the person who used to run the upload to move on and for nobody to learn that the job existed. It is the same instrument, and the same reasoning, as watching the Direct share in Marketing Channels: two cheap alarms that catch upstream failures in days rather than quarters, and both routinely missing from otherwise careful reporting setups.
Maintenance, which is really just deciding things once
Almost every failure in this section is a failure of ownership rather than a failure of technology. Two systems wrote to one column because nobody said which one should. A file stopped arriving because the person who uploaded it left. A bucket filled up because nobody agreed to empty it.
So the maintenance discipline is small, and it fits on one page.
- Set
Campaign Tracking- Key
- Tracking Code (
eVar1) - Subscriptions
club-prod,club-dev
| Column | Owned by | Source | Cadence | Overwrite |
|---|---|---|---|---|
| Channel | Rule | Split on _ | Every 4 hrs | All values |
| Year | Rule | Split on _ | Every 4 hrs | All values |
| Month | Rule | Split on _ | Every 4 hrs | All values |
| Campaign | File | Marketing display names, curated | Weekly (manual) | Only unset |
- Notify on failure
analytics@club.example- Notify on success
OFF— nobody reads a daily “it worked” email- Jobs tab review
- Weekly
- Unspecified baseline
- 3%. Investigate at 5%.
- Cloud bucket
club-analytics/classifications/- Cleanup
- Lifecycle rule, delete after 7 days. Adobe does not delete imported files, and an unclean bucket means a reimport of the entire history on every single run, forever.
- Key risk
- Source system is
club-crm. Confirmed: member IDs are never reused. Re-confirm on any CRM migration — a recycled key rewrites history.
That document is the bookend to the tracking code convention from Designing the Key. One decides what the key looks like. This one decides who is allowed to write to it. Between them they prevent most of what this section exists to diagnose.
Nobody can tell whether 4% Unspecified is a problem, because nobody knows what normal looks like. So write down what it is today, on a day when everything works. Then a drift from 3% to 11% is not a debate, it is an alarm. This costs one minute and it converts the module's only honest signal into an actual monitor.
What was actually built here
Step back from the interface for a second.
This module took a value the business could not read, M-10482 or eml_2026_07_winback_in, and gave it meaning it never carried. No developer shipped code. No server call changed. Not one byte of collected data was altered. And yet a report that could only say "one hundred members did things" can now say which of them were over sixty, on which nights, in which halls.
That is what report-time shaping buys you, and it is why classifications sit where they do. Processing rules and VISTA rules shaped the data before it landed, permanently, with no way back. Classifications shaped it afterward, reversibly, retroactively, forever. Same goal, opposite end of the pipeline, and now you know when to reach for each.
And with that, the shaping is done. That closes Classifications, and with it the whole of the Shape the data phase. Foundations built the understanding, collection captured the behavior, and shaping made it legible: processing rules, VISTA rules, marketing channels, and classifications, each adding a layer of meaning the raw hit never carried. Three of the five phases are behind you, and the data is as meaningful as it is ever going to get.
Which raises a question this module cannot answer
Everything from processing rules to classifications has been about one question: what does this value mean?
Not once has anything asked a different question, and it is the question every stakeholder actually has.
Which of these people are worth looking at?
Members over sixty who booked a hall but never a gym slot. Visitors who arrived on a Winback campaign, came back twice, and then vanished. People who did one thing and not another, in that order, within a week.
No amount of shaping answers that. Shaping tells you what a value means. It does not let you carve the audience. For that you need something that can hold a condition, nest it, sequence it, and apply it across every report you own, and that is a different instrument entirely.
It is called a segment, and it lives in the next phase of this curriculum: Analyze the data, where the question stops being what a value means and becomes which of the people behind those values are worth your attention. That phase begins with Calculated Metrics, the measures you define for yourself, and then reaches Segments, the instrument built to carve an audience into exactly the groups this section kept asking about.
Job results and failures: Components > Classification sets > Jobs. What is actually stored: [your set] > Schema > Download. Rule behavior before you commit to it: [your set] > Rules > Test rule set. Failure notifications are set on the set itself, in its Settings.
This article focuses on the concepts, architecture, and practical guidance behind the topic. For the latest UI walkthroughs and step-by-step implementation instructions, use the links below. They leave this site and open Adobe's own documentation in a new tab.