> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zeotap.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Q1 2026 Release Notes

> January – March 2026

<Update label="Zeotap Q1 2026 Release Notes" description="January – March 2026">
  **Released: January – March 2026**

  Q1 brought deeper observability into Journeys, a proper access control model for growing teams, frequency capping across all messaging, and nine new or enhanced integrations.
</Update>

## Journey Observability

<Update label="Journey Traces">
  **Release Date:** Q1 2026

  **When a journey is failing for some users, aggregate counts tell you nothing useful.**

  "12 failed" doesn't tell you which 12, what data they came in with, which node they dropped out at, or what was actually sent downstream. Journey Traces closes that gap — search for any user by UUID and get a complete, step-by-step replay of their path through the journey.

  **What you get:**

  * The exact input event payload (raw JSON) that triggered the journey for that user
  * The output payload sent to each destination — switch between destinations with a dropdown to compare
  * Visual path highlighting on the canvas: green checkmarks on every node the user actually qualified for. A missing checkmark tells you exactly where they fell out
  * A direct link to that user's Customer 360 profile to check identity resolution, consent flags, or segment membership that might explain the failure
  * Date-range filtering to narrow down when an issue started

  Combined with Error Logs (below), you now have a full picture: aggregate failure rates at the top, and per-user data when you need to go deeper.

  [Journey Traces docs →](/articles/orchestrate-customer/journey-traces)
</Update>

<Update label="Error Logs in Journeys">
  **Release Date:** Q1 2026

  **Not all journey failures need the same response. Some need you to act immediately. Some will fix themselves.**

  The new error code system classifies every destination-level failure so you know exactly what to do — or whether to do anything at all. Persistent errors require manual intervention. Transient errors are automatically retried by the system; the only thing you should NOT do with those is manually re-inject profiles, which will cause duplicates once the destination recovers.

  | Code                   | Type       | What it means                  | First action                                              |
  | ---------------------- | ---------- | ------------------------------ | --------------------------------------------------------- |
  | `AUTHENTICATION_ERROR` | Persistent | Credentials expired or invalid | Update the destination config immediately                 |
  | `BAD_REQUEST`          | Persistent | Required field missing         | Check for null primary ID — that's 90% of cases           |
  | `CONSENT_NOT_PROVIDED` | Persistent | User lacks required consent    | Review consent attributes and destination mapping         |
  | `EVENT_PARSING_FAILED` | Persistent | Transformation rule failed     | Inspect field mappings and transformation logic           |
  | `ENDPOINT_NOT_FOUND`   | Persistent | Destination URL is wrong       | Verify the endpoint URL in destination settings           |
  | `RATE_LIMIT`           | Transient  | API limit hit                  | Auto-retried — consider reducing batch size if persistent |
  | `SERVER_ERROR`         | Transient  | Destination-side error         | Auto-retried — do not manually re-inject                  |
  | `SERVICE_UNAVAILABLE`  | Transient  | Temporary outage               | Auto-retried — monitor destination status                 |
  | `MISC_ERROR`           | Unknown    | Unexpected failure             | Contact support with the raw error response               |

  **Error rate thresholds to guide your response:**

  * **\< 1%** — Normal, no action needed
  * **1–5%** — Investigate within 24 hours
  * **5–20%** — Critical, investigate within 2 hours
  * **> 20%** — Pause the journey and escalate immediately

  [Full error code reference →](/articles/orchestrate-customer/journey-error-codes)
</Update>

## Access Control

<Update label="My Roles + Folder Access Management">
  **Release Date:** Q1 2026

  **As your team grows, a flat permission model breaks down fast.**

  A regional marketing manager shouldn't be able to edit a global retention journey. A new analyst shouldn't see audience folders they don't own. Until now, there was no clean way to enforce this — users either had access to everything or nothing useful.

  Two capabilities ship together to fix this. **My Roles** lets admins create custom permission sets — defining exactly what each role can do across every module in Zeotap CDP. **Folder Access Management** goes a level deeper: within a role, you can restrict which specific Journey and Audience folders that role can see and interact with.

  **How the folder access modes work:**

  | Mode                      | Behaviour                                                              | Best for                                                                  |
  | ------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------- |
  | **All Folders** (default) | Access to everything, including folders created in future              | General-purpose roles, small teams                                        |
  | **Include**               | Only explicitly selected folders — new folders NOT added automatically | High-restriction roles (e.g. an agency managing a single brand)           |
  | **Exclude**               | Everything except blocked folders — new folders accessible by default  | Low-restriction roles where you just need to hide a few sensitive folders |

  **A few things worth knowing:**

  * Folder access covers both **Journeys and Audiences** — configured independently per role
  * Granting access to a parent folder automatically grants access to all its sub-folders
  * Changes apply **immediately** to every user assigned that role
  * Each user holds one role per organization

  [My Roles docs →](/articles/admin-customer/my-roles) · [Journey Folders docs →](/articles/orchestrate-customer/journey-folders)
</Update>

## Messaging Control

<Update label="Gateway — Frequency Capping">
  **Release Date:** Q1 2026

  **Multiple active journeys targeting the same user can quickly turn into a problem.**

  An email journey, a push notification journey, and an SMS re-engagement campaign can all fire independently — and the same user can receive all of them within hours. Gateway gives you a single place to set an upper limit on how many messages any user can receive, across all journeys at once.

  Create a named policy with one or more frequency rules — globally across all message types, or per channel (Email, SMS, In-App Push, Web Push). Every journey that uses a supported destination automatically enforces the policy from the next calendar day. You don't need to configure it per journey.

  **How it works:**

  * Rules are expressed as: *"Send no more than X \[channel] messages to a user every Y days"*
  * Add multiple rules to one policy with AND logic — for example: max 2 emails AND max 1 SMS per day
  * When a user hits the cap, the send is blocked and logged as an error on the journey node — other users in the journey are unaffected
  * Counters reset at **00:00 UTC** each calendar day, not on a rolling 24-hour window
  * Editing a policy resets all counters immediately — users who were previously capped become eligible again

  **Supported destinations:** Emarsys, Optimizely Campaigns, Iterable, Elaine, WhatsApp, Inxmail API: Journeys, SFMC Journey Builder

  Note: Gateway applies to messaging destinations only. Data exports, audience syncs, and non-messaging journeys are unaffected.

  [Gateway docs →](/articles/orchestrate-customer/gateway)
</Update>

## Integrations

<Update label="Braze — Delete, User Alias & Attribute-Based Delta">
  **Release Date:** Q1 2026

  Three meaningful improvements to the Braze integration in one quarter.

  **Delete support (Journeys + Audience)**

  You can now trigger user deletion to Braze from both Journey workflows and Audience activations. This closes the loop on GDPR right-to-erasure workflows — when a user is deleted in Zeotap, that deletion can now propagate to Braze automatically, without manual intervention.

  **User Alias support (Journeys + Audience)**

  Braze User Alias identifiers are now supported in both activation modes. This means you can target anonymous profiles and alias-based users in Braze alongside your known, identified users — useful for pre-login journeys and cross-device scenarios where a persistent identity isn't always available.

  **Attribute-Based Delta**

  Instead of syncing full user profiles on every activation run, Braze now only receives the attributes that have actually changed since the last sync. The result: significantly fewer API calls, fresher data in Braze, and lower cost at scale.

  [Braze Audience docs →](/articles/integrate-customer/braze-1) · [Braze Real-time docs →](/articles/integrate-customer/braze-integration)
</Update>

<Update label="Inxmail — Audience">
  **Release Date:** Q1 2026

  **Sending a Zeotap audience to Inxmail used to mean exporting a CSV and manually importing it into a mailing list.**

  With the new Inxmail Audience destination, that workflow is fully automated. Connect your Inxmail account, configure the recipient field mapping, attach the destination to an audience — and Zeotap creates the mailing list in Inxmail and populates it with your recipients automatically. The only required field is email; everything else (first name, last name, custom attributes) is optional.

  **What you can configure:**

  * Mailing list name, sender address, sender name, and reply-to details
  * Tracking permission field for email consent compliance
  * Custom attributes — as long as they're pre-created in Inxmail first

  [Inxmail Audience docs →](/articles/integrate-customer/inxmail-audience)
</Update>

<Update label="Responsys — Audience + Real-time">
  **Release Date:** Q1 2026

  Responsys now works across both activation modes from a single integration.

  **Audience (batch)** syncs your Zeotap segments directly into Responsys Profile Lists and Profile Extension Tables on a scheduled basis — keeping your Responsys contact database in sync with your CDP segments for ongoing campaign targeting.

  **Real-time** triggers on-demand email, SMS, and push campaigns directly from Zeotap Journey workflows. When a user hits a Send to Destination node in a Journey, Responsys receives the merge call and fires the configured campaign to that recipient immediately — no batch delay.

  Both modes use the same credentials. Configure once, choose your activation pattern per use case.

  [Responsys Audience docs →](/articles/integrate-customer/responsys) · [Responsys Real-time docs →](/articles/integrate-customer/responsys-real-time-integration)
</Update>

<Update label="New Destinations">
  **Release Date:** Q1 2026

  | Destination            | Type               | What it enables                                                                         | Docs                                                         |
  | ---------------------- | ------------------ | --------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
  | PubMatic Publisher     | Audience           | Activate segments on PubMatic's supply-side platform for programmatic monetisation      | [Setup →](/articles/integrate-customer/pubmatic-publisher)   |
  | Reddit Custom Audience | Audience           | Sync segments to Reddit for targeted advertising across communities                     | [Setup →](/articles/integrate-customer/reddit)               |
  | Dynamic Yield          | Real-time          | Stream live user events and attributes into Dynamic Yield for real-time personalisation | [Setup →](/articles/integrate-customer/dynamic-yield-events) |
  | Active Agent           | Audience           | Sync segments to Active Agent for outreach and activation                               | Documentation coming soon                                    |
  | Decentriq              | Audience           | Send segments into Decentriq's data clean room for privacy-safe collaboration           | Documentation coming soon                                    |
  | Salesforce (Source)    | Source enhancement | Enhanced ingestion from Salesforce CRM                                                  | —                                                            |
</Update>
