Adobe Campaign Classic generates a significant volume of logs for every operation, delivery send, user action, workflow execution. These logs are the platform's memory. Knowing how to distinguish, read and use them is a key skill for any ACC developer or administrator.
Here's a comprehensive overview of the main log types, their differences and how to use them effectively.
Delivery logs. One record per recipient per delivery. Contains the status of each send: sent, failed, quarantined, bounced.
Tracking logs. Records opens, clicks, unsubscribes and web interactions for each recipient.
Audit journal. Tracks all modifications made on the platform: who did what and when. Essential for governance.
Workflow logs. Records the execution of each activity, errors encountered and transitions between activities.
This is the highest-volume table on a mature Campaign instance. It contains one record for every message sent to every recipient. On an active platform, it can reach several hundred million rows.
The table gives a complete view of each send status, but only from Campaign's perspective. Here's what it actually contains:
iStatus : send attempt status: 0 (pending), 1 (sent by Campaign), 2 (ignored), 4 (failed), 6 (quarantined)iErrorCode : error code on failure. Codes 1–9 correspond to known bounce types (full mailbox, unknown domain, invalid address…)iErrorType : error category: 1 (unknown), 2 (undelivered), 3 (unreachable), 4 (unwanted), 5 (refused), 6 (ignored)sFailed : the error label returned by the remote server, often extracted from the SMTP responsetsLastModified : date of last status updateiMsgId : unique message identifier, join key with trackingLogiDeliveryId : identifier of the parent deliveryThis is the nuance many Campaign developers miss. Here's what actually happens during a send:
250 (accepted), 550 (permanent refusal), 421 / 450 (temporary refusal)broadLogRcp accordingly, that's all it receivesWhat Campaign will never see is what happens after acceptance on the ISP side. A 250 code means the ISP accepted the message, not that it was delivered to the inbox. After acceptance, the ISP handles on its own:
This information belongs to the ISP, it never flows back to Campaign. This is why a 100% delivery rate in Campaign does not guarantee that 100% of emails reached the inbox.
Campaign MTA journals (accessible depending on hosting via Supervision → Messages in progress) contain the SMTP dialogue with ISP response codes and verbose messages, useful for diagnosing refusals. But they remain limited to Campaign's view: what happens after acceptance is opaque.
💡 Diagnostic reflex: if iStatus = 4 (failed) and iErrorCode = 0 in broadLogRcp, check the MTA journals, Campaign failed to interpret the ISP's SMTP response. For post-acceptance deliverability issues (email landing in spam despite a 250), specialist tools like Postmaster Tools (Gmail) or SNDS (Microsoft) provide an ISP-side view.
⚠️ Watch point: in V8 with FFDA, broadLogRcp is stored in Snowflake. Direct queries on this table from Campaign can be slow on large volumes. Prefer native cubes and reports for analysis, and FDA query activities for batch processing.
Tracking logs record all recipient interactions with the message after receipt. They are populated by Campaign's tracking server (or Redirect) on every email open or click on a tracked link.
iUrlId : identifier of the clicked URL, join with trackingUrl to retrieve the actual URLiLogType : interaction type: 1 (open), 2 (click), 3 (unsubscribe), 6 (mirror page)tsLogDate : date and time of the interaction, in UTCiMsgId : join key with broadLogRcpuserAgent : User-Agent string of the browser or email client at interaction timesSourceIp : source IP address of the interaction (useful for detecting bots)iRecipientId : recipient identifier, join key with nmsRecipientSeveral important limitations to know for correctly interpreting tracking data:
⚠️ Interpretation: Campaign tracking metrics are indicators, not exact measurements. On large volumes, trends are reliable, but absolute figures (open rate especially) should be interpreted with perspective, particularly on databases with a high proportion of Apple users.
💡 Best practice: email opens are increasingly unreliable since iOS 15 (Apple Mail Privacy Protection pre-loads tracking pixels). To measure real engagement, prioritise clicks over opens in your analyses.
The audit trail is often overlooked on Campaign projects, but is essential on multi-user or regulated environments. It tracks every modification made on the platform: creation, modification, deletion of Campaign objects (schemas, workflows, deliveries, typologies…) and operator actions.
In the Campaign Classic interface: Administration → Audit Trail. Filter by object type, operator, date and action. On V8 instances, the audit trail is accessible via the same paths but stored differently.
💡 Key use: when a workflow stops working for no apparent reason, the audit trail is often the first place to look, someone may have modified a schema or option without flagging it.
Workflow logs are accessible directly from the Campaign interface, in the execution journal of each workflow. They track the execution of each activity, transitions taken and errors encountered.
| Log | What | Volume | Retention | Main use |
|---|---|---|---|---|
broadLogRcp | Send statuses | Very high | Configurable | Deliverability, quarantines |
trackingLog | Opens / clicks | High | Configurable | Engagement, segmentation |
auditTrail | Platform actions | Low | Long term | Governance, debug |
wfLog | Workflow execution | Medium | Short term | Debug, optimisation |
Log retention is a commonly underestimated topic. On a Campaign instance without a purge policy, broadLogRcp and trackingLog can saturate the database within months on high-volume platforms.
broadLogRcp without checking dependencies with trackingLog : referential integrity can be affected.⚠️ GDPR note: logs contain personal data (email addresses, browsing behaviour). Their retention period must be defined in your data policy and aligned with your processing register.
Adobe Campaign logs are far more than a debugging tool, they are the source of truth for everything happening on the platform. Mastering their differences, knowing where to look and how to query them is a skill that saves considerable time on every Campaign project. A good habit to adopt: before investigating an anomaly in code or configuration, always check the logs first.
8 modules, 24 lessons for reliable production code: queryDef, JavaScript workflows, JSSP, webApps, APIs and deployment. Permanent access, fully commented code.
Discover the training →I can support you on diagnostics, optimisation and team upskilling. Reply within 24 hours.
Let's talk →