Release Notes

Follow new updates and improvements to Delivr.ai.

May 1st, 2026

API

Authentication

API Key Auth on Lists and Campaigns

The lists and campaigns endpoints now accept API-key authentication. Previous scope gates have been removed: API-key callers reach the same surface as session callers.

GET /v1/lists
GET /v1/lists/{list_id}
POST /v1/lists
GET /v1/campaigns
GET /v1/campaigns/{campaign_id}

Authentication:

  • Authorization: Bearer <api_key> - Standard API-key header. No additional scope is required.

Example:

curl https://api.delivr.ai/api/v1/lists \
  -H "Authorization: Bearer $API_KEY"

Events

Query DSP Events by Campaign ID

Developer tokens can query DSP events filtered by campaign_id against the v2 events API. The proxy translates the v2 source parameter to the upstream contract.

GET /v2/events

Parameters:

  • source (string) - delivrdsp

  • campaign_id (string) - Campaign to filter events by.

  • start_time (string, ISO 8601) - Inclusive lower bound.

  • end_time (string, ISO 8601) - Inclusive upper bound.

Example:

curl "https://apiv3.delivr.ai/api/v2/events?source=delivrdsp&campaign_id=cmp_abc123&start_time=...&end_time=..." \
  -H "Authorization: Bearer $API_KEY"

Project-Scoped DSP Queries

The events API supports project-scoped DSP queries, returning events for all DSP campaigns under a given project.

Parameters:

  • project_id (string) - Restrict results to events belonging to this project.

Audiences

Configurable Intent Lookback

Audiences accept an intent_window_days value on create and edit. Bucket counts scale to match the selected window.

POST /v1/audiences
PATCH /v1/audiences/{audience_id}

Parameters:

  • intent_window_days (integer) - Number of days of intent history to consider when building the audience.

Response:

  • audience.intent_window_days (integer) - The configured window.

  • audience.bucket_counts (object) - Counts scaled to the configured window.

Rate Limiting

Rate limits on the data API are now applied per organization rather than globally. Each organization receives 25 requests per second with a burst capacity of 50. Integrators making concurrent requests across many organizations are no longer constrained by a shared global limit.

Response headers:

  • X-RateLimit-Limit (integer) - 25

  • X-RateLimit-Remaining (integer) - Tokens remaining in the current second.

  • X-RateLimit-Burst (integer) - 50

  • Retry-After (integer, on 429) - Seconds to wait before retrying.

Migration note: Clients previously throttled by the global limit will see additional headroom. Clients running heavy traffic against a single organization should still implement exponential backoff on 429 responses.

Bug Fixes

  • DSP exports no longer fail with pixel not found when source and campaign ID are not threaded into the event query.

  • Empty audience exports complete with zero records instead of failing the run.

  • Fixed an end_date boundary mismatch between SQL and application code in export queries; the boundary is now consistent across the stack.

  • Fixed a race where an export run could continue executing after the export was disabled.

  • Audience filters with very large inline value lists now spill values to S3 instead of failing the count worker with E2BIG.

  • The contains filter no longer splits multi-word values on commas.

  • Audience download presigned URLs are re-signed on every download call, eliminating expired-URL errors on retry.

  • Email subject templates are interpolated on every export send path, including batched, streamed, and multi-file exports.

  • The email export windowed path now defaults the S3 bucket instead of erroring with s3_bucket is required.

  • S3 exports fail fast with a clear error when integration credentials are empty or partially populated, instead of erroring deep in the run.

For full endpoint details, parameters, and examples, see our developer documentation.

May 1st, 2026

Platform

Exports

A heavy month for exports, with new ways to schedule, name, slice, and format the files we deliver to your destinations.

Custom Filename Templates

You can now define a filename template when creating or editing a file export destination. Build the pattern in a pill-based template builder and see a live preview of how output files will be named before you save.

Long-Range Historic Exports

One-time exports now support date ranges up to 365 days. Larger historical pulls run as a series of windows so they complete reliably, with progress visible while the run is in flight.

Date Range Picker on One-Time Exports

Pick the exact start and end date you want when running a one-time export instead of relying on a fixed lookback. Both the create and edit screens accept the user-provided range, with validation on the backend.

Time-of-Day and Day-of-Week Scheduling

Daily and weekly recurring exports can now be anchored to a specific run time and a specific day of week. The scheduler enforces those anchors so runs land when you expect them.

Unique Contacts Only

A new "Unique contacts only" toggle on file exports deduplicates rows by hashed email so each contact appears once per output file.

Combine Multi-Window Output Into One File

A new combineOutput toggle on file destinations writes a single combined artifact for multi-window exports instead of one file per window.

JSONL Output Format

S3 export destinations now accept JSONL alongside the existing file formats, making it easier to feed export output directly into JSON-native downstream systems.

Raw DSP Event Log Exports

A new export type pulls raw DSP event logs straight from campaign reporting. Choose the Raw Logs format when creating an export to deliver the underlying event records to your destination.

Emit Empty File on Zero-Record Runs

File destinations can now receive an empty file when an export produces zero records, so downstream automations that watch for a delivered file no longer stall. The behavior is controlled by an emitEmptyFile toggle on the destination.

Auto-Archival of Completed One-Time Exports

Completed one-time exports are now periodically archived, and the exports list gained an "Include archived" filter so you can show or hide them.

Cool-Off After Retry Exhaustion

After an export exhausts its automatic retries, manual re-triggers are gated behind a cool-off window so a single export can't be re-launched repeatedly while it is still in a failure state.

Resolved Only Toggle on Export Edit

The Resolved Only toggle is now available on the export edit screen, not just on create, so you can flip it on for an existing export without recreating it.

Data Watermark on Export Overview

The export overview now displays the data watermark for the export so you can see how recent the underlying data is. Scheduled exports also use this watermark when computing the date range for the next run.

Preserve Case in Filenames

Export filenames and project folder paths now preserve the original case from your destination configuration.

Email Subject Template Across All Send Paths

The subject template you configure on email exports is now interpolated across batched, streamed, and multi-file send paths, not just single-file sends.

DelivrDSP and Campaign Reporting

DSP-related flows in the dashboard were renamed, scoped, and expanded.

DelivrDSP Source Naming

The DSP source is now labeled DelivrDSP across the audience and export flows.

One DelivrDSP Connection Per Project

Projects are now limited to a single DelivrDSP connector and a unique account ID. Attempting to add a duplicate surfaces a clear uniqueness error instead of failing silently.

Campaign Selector for DSP Exports

The export create flow now shows a two-level data source selector when DSP is chosen: pick the DSP and then pick the specific campaign to export from.

Inactive Campaigns and All-Project DSP Scope

DSP queries can now run against all projects in scope and include inactive campaigns in the result set.

DSP Event Fields in the Field Catalog

The export field selector now exposes DSP-specific event fields when the source is DSP, including HEM and client IP, so you can pull additional event-level attributes into the output.

Audiences

Audience configuration gained finer controls and clearer feedback.

Intent Lookback Window

Audience create, edit, and detail screens now expose an intent window slider so you can choose how many days of intent signal feed into the audience.

Audience Size Freshness

The audiences list now shows when each audience's size was last computed, so you can tell at a glance whether the displayed size reflects a recent refresh.

Multi-Value Filter Chips

Multi-value text filters in the audience, persona, and account condition builders now render as chips, making it visually clear when multiple values are targeted in a single condition.

Bug Fixes

  • Fixed audience name not saving when edited
  • Fixed grouping functions not working in the audience builder
  • Fixed the "contains" filter splitting multi-word values on commas
  • Fixed audience downloads failing for some completed audiences
  • Fixed the audience count worker erroring on filters with very large inline value lists
  • Fixed audience status badge mismatch between the list and detail views
  • Fixed the not-found page entering an infinite redirect loop on certain navigation paths
  • Fixed an org switcher crash when changing organizations
  • Fixed dashboard memory growth during long-lived sessions
  • Fixed export UI freezes when creating, editing, or running exports
  • Fixed weekly export creation not saving the chosen day of week
  • Fixed empty-export warning copy showing the wrong wording on event exports
  • Fixed the contact details panel overflowing on long text values
  • Fixed an empty Event Timeline on buyer detail pages
  • Fixed pixel install failure messaging
  • S3 exports now fail fast with a clear error when destination credentials are missing or truncated, instead of running silently with no output

March 31st, 2026

Exports

New controls for managing export output, error visibility, and destination configuration.

Record Limits for Exports and Audience Downloads

You can now set a record_limit parameter when downloading audiences or creating exports to cap the number of records returned. The limit can also be cleared on existing exports by setting it to null in the update payload.

DSP List Name Preservation

When exporting an audience to DelivrDSP, the audience name is now automatically carried through as the DSP list name. You can also provide a custom list name via the optional list_name field on export creation.

Per-Record Export Error Details

Export run responses now include per-record error details. The object_type_results field on export run objects breaks down success and failure counts by CRM object type, with individual error messages available for failed records.

CRM Field Mapping

Improvements to how data is prepared and validated before CRM export.

Field Constraints and Normalization

CRM exports now enforce per-field character limits, apply automatic normalization, and support configurable default values. Multi-value fields that exceed destination limits return a MULTI_VALUE_TOO_LONG error code instead of silently truncating.

HubSpot Contact Write with Auto-Created Companies

HubSpot exports now automatically create or attach company records when writing contacts. Pixel activity is also written to the contact's HubSpot timeline so on-site behavior shows up natively in HubSpot. No additional configuration is required for existing HubSpot integrations.

Audiences and Lists

New filtering and bulk operations for list management.

Bulk Delete for List Uploads

A new bulk delete endpoint allows you to remove multiple list uploads in a single request by passing an array of list IDs.

Type and Source Filters on List Uploads

The list uploads endpoint now accepts type and source query parameters to filter results by upload type and originating source.

Audience Preview Limit Parameter

The audience preview endpoint now accepts a limit query parameter to control the maximum number of preview rows returned.

DSP Reporting

New data available for programmatic campaign analysis.

Campaign Match Rates

DelivrDSP campaign responses now include match rate data, showing how many exported contacts were matched by the DSP. This data is available through the campaign performance endpoints.

Daily Campaign Performance

DelivrDSP campaign performance is now persisted with per-day granularity, so daily delivery, spend, and CPM trends are available through the campaign performance endpoints.

Privacy and Compliance

UID2 Opt-Out Webhook

A new webhook endpoint accepts UID2 opt-out notifications. When a user opts out through the UID2 framework, their record is added to a unified privacy opt-out registry with a full audit log. Both GET and POST are supported to accommodate different UID2 operator configurations.

Pixel Collection

New options for controlling pixel behavior.

Cookieless Mode

Organizations can now enable cookieless pixel collection through the organization settings API. When cookies_enabled is set to false, pixels deployed for that organization will not set or read browser cookies. Existing pixels are regenerated automatically to reflect the new mode.

Custom Fields in Pixel Events

Pixel event payloads now include source-level custom fields in the event_data object, allowing richer context to flow through from pixel sources into downstream processing.

Bug Fixes

  • Fixed an issue where export creation could fail with an empty identifier when the workspace context was incomplete
  • Fixed email integration test connections returning a credential decryption error
  • Fixed audience downloads failing for lists generated by exports
  • Fixed campaign sync not filtering results by the correct account
  • Fixed campaign budget and CPM values being stored as null when syncing from DelivrDSP
  • Fixed the record_count field being returned as the wrong type in event ingestion responses
  • Fixed contact database filters using incorrect field name casing
  • Fixed sync history records staying in RUNNING state when the dashboard tab disconnected mid-sync
  • Fixed empty-string UUID fields being treated as valid IDs in handler responses

For full endpoint details, parameters, and examples, see our developer documentation.

March 31st, 2026

Audience Builder

New tools for managing audiences and list uploads more efficiently.

Record Limits for Downloads

You can now set a record limit when downloading audiences, giving you control over file size and processing time for large audiences.

Bulk Actions for Lists

Bulk delete is now available for list uploads, letting you clean up multiple lists at once. You can also bulk retry failed personas, accounts, and audiences directly from their respective tables.

List Upload Filters

The list uploads table now supports filtering by type and source, making it easier to find specific uploads in large workspaces.

Improved Audience Preview

Audience preview reports now sort contacts by intent relevance, grouping results so the highest-intent contacts appear first. The preview also now clearly displays AND/OR logic between conditions.

Drag-and-Drop Segmentation

You can now drag and drop conditions between groups in the audience builder, making it easier to reorganize complex segmentation rules.

Exports

More control and visibility into how your data exports are configured and performing.

S3 Path Prefix

S3 exports now support a custom path prefix, letting you organize exported files into specific folders within your bucket.

DSP List Naming

When exporting an audience to DelivrDSP, the audience name is now automatically carried over as the list name in the DSP, so you no longer need to re-enter it.

Export Error Details

Export run pages now show per-record error details, broken down by object type. When a CRM export partially fails, you can see exactly which records failed and why.

CRM Field Mapping Improvements

The CRM export configuration now includes per-field default values, field constraints, and smarter handling of multi-value fields. Errors are grouped by type so you can quickly identify patterns.

Full Export Names

Export names are now fully visible in the dashboard instead of being truncated, so you can distinguish between similarly named exports at a glance.

Campaign Reporting

Better visibility into DSP campaign performance and match quality.

DSP Match Rates

Campaign reporting now shows match rates for your DSP exports, so you can see how effectively your audiences are matching in the ad platform.

Campaign Sync on Demand

A new "Sync Now" button on the DSP campaign overview lets you pull the latest campaign data without waiting for the next scheduled sync.

Website vs. Activate Pixel Types

The pixel list now distinguishes between website pixels and activate pixels, making it clearer which type each pixel is.

Search & Navigation

Improvements to finding what you need across the dashboard.

Smarter Search

Search now supports multi-token ambiguous matching. Searching for "acme corp" will find "Acme Corporation" and similar variations, making it much easier to locate organizations and projects.

Notification Navigation

Clicking a notification in the bell menu now takes you directly to the relevant page, such as the completed export or failed run.

Redesigned Onboarding

New users now see a streamlined two-step onboarding flow with a setup checklist and helpful empty states to guide them through creating their first pixel, audience, and export.

Contact Database

Improvements to how contact data is displayed and filtered.

Pixel Name in Resolution Stats

The resolution statistics table now includes the pixel name alongside each entry, so you can see which pixel drove each resolution.

Improved Data Display

Contact details now show proper title casing for names and fields, cleaner boolean formatting, and better layout for long values.

Organization Settings

Cookieless Mode

Organization settings now include a cookies toggle, allowing you to enable cookieless mode for privacy-first deployments. When enabled, your pixels will operate without setting browser cookies.

Bug Fixes

  • Fixed inflated spend numbers on the campaign dashboard caused by cumulative values being written as daily totals
  • Fixed contact details panel where content was clipped and not fully visible
  • Fixed list count on the home dashboard showing per-page count instead of total records
  • Fixed notification badge text wrapping awkwardly in the header
  • Fixed an issue where navigating to an unauthorized workspace would sign users out
  • Fixed export creation failing when certain workspace fields were not populated
  • Fixed broken list uploads not showing error states, making it unclear why a list was unusable
  • Fixed export field settings not saving correctly when editing an existing export
  • Fixed exports incorrectly showing "Pixel" as the source type for audience and persona exports
  • Fixed the Cancel button on persona pages not returning to the previous screen
  • Fixed email integration test connections failing with a credential error
  • Fixed test connection returning access denied for certain export types
  • Fixed list downloads failing for lists generated by exports
  • Fixed contact database filters not applying correctly due to formatting mismatches
  • Fixed campaign budget and CPM values showing as zero after sync
  • Fixed daily campaign performance metrics being collapsed into a single date

February 28th, 2026

Audience API

New endpoint for checking audience readiness without triggering billing.

Audience Task Status Endpoint

A new GET /api/v1/audiences/{id}/status endpoint lets you check the current task status of an audience (pending, unloading, completed, failed) without hitting the download endpoint. Useful for verifying audience readiness before attempting a large download or streaming export.

For full endpoint details, parameters, and examples, see our developer documentation.

February 28th, 2026

Export Creation Redesigned

The export workflow has been completely rebuilt as a guided, step-by-step wizard. You can now set up new connections inline without leaving the export flow, and custom integration names are preserved through the entire setup process.

Multi-Object CRM Exports

Export to Contacts, Leads, and Tasks in a single export run. Each object type shows its own result summary so you can see exactly what was created or updated.

Duplicate Tracking

Export status now distinguishes between failed records and duplicates, giving you accurate counts of new records created versus existing records matched.

IP Address and Company Domain for DSP Exports

Two new data type options are available when exporting to DSP destinations, enabling IP-based and domain-based targeting workflows.

All-Pixels Export

Export resolved events across all pixels in a project at once, rather than selecting individual pixels one at a time.

Inactive Pixel Handling

Inactive pixels are now clearly labeled in the export flow and cannot be selected, preventing failed exports from deactivated tracking.

Audience Builder

The audience builder now offers more powerful filtering and a streamlined interface for building targeted segments.

AND/OR Logic for Intent Topics

Combine multiple intent topics with AND or OR operators to create more precise audience definitions based on buyer research activity.

Signal Strength Indicators

See per-topic signal strength when selecting intent topics, helping you understand the relative weight of each topic in your audience.

Sentence-Style Condition Builder

Filter conditions now display as readable sentence-style chips, making complex audience rules easier to understand and modify at a glance.

Save as Audience from Contacts

Create a new audience directly from your contact database filters with a single click, without switching to the audience builder.

Job Title Filtering

Normalized job title is now available as a filter field in persona conditions, enabling more consistent role-based audience targeting.

Per-List Include/Exclude

Apply include or exclude operators to individual lists within an audience definition for more granular segmentation.

Identity and Resolution Analytics

The identity and resolution pages have been refreshed with clearer metrics and more useful data columns.

Resolution Rate Visualization

A new arc gauge makes resolution performance immediately visible, with polished filter controls for date range and pixel selection.

Browser Breakdown

Resolution rates are now segmented by browser type, showing how different browsers contribute to your overall performance.

People Identified Metric

A new KPI shows the total number of unique people identified, complementing existing event-based metrics.

Updated Data Columns

Contact lists now show business email by default. Audience sample tables include topic names for added context. Low-value columns have been removed to reduce clutter.

Campaign Management

Campaign Detail Page

View campaign overview, attached lists, and settings from a dedicated page with organized tabs.

Performance Reporting

A new reporting dashboard displays campaign performance metrics with daily breakdowns, enabling you to track delivery and engagement trends over time.

Data Quality

Title Case Formatting

Contact names, job titles, company names, and address fields now display in proper title case across all views and exports, improving readability and consistency.

Accurate Visitor IP Addresses

IP address data in exports and analytics now correctly reflects actual visitor IPs rather than infrastructure addresses.

List Management

Faster List Imports

List uploads now process asynchronously with real-time progress indicators. Large files upload significantly faster, and you can navigate away while imports complete in the background.

Dashboard Experience

Role Permissions Visibility

When inviting or editing team members, the permissions granted by each role are now displayed directly in the dialog so you can make informed role assignments.

Improved Navigation

Recent items are now accessible from the sidebar, and navigation across projects and organizations is more consistent.

Friendlier Error Messages

Error notifications now display helpful descriptions instead of raw HTTP status codes.

Bug Fixes

  • Fixed CRM Task exports failing when no field mappings were configured
  • Fixed a crash when selecting Salesforce task defaults with an empty value
  • Fixed OAuth error redirects losing connection state and showing blank pages
  • Fixed pagination controls inadvertently triggering form saves
  • Fixed audience file downloads not converting from Parquet to CSV format
  • Fixed list names not displaying correctly in the audience builder
  • Fixed multiselect filter conditions using incorrect comparison operators
  • Fixed date count inconsistencies on the identity screen for buyers and accounts
  • Fixed CRM record deduplication and single-day date range handling
  • Fixed project-level member invites failing to grant proper access
  • Fixed organization invite dialog showing an empty roles dropdown
  • Fixed list uploads page crash on the segmentation screen

January 31st, 2026

Resolutions API

The resolutions backend was rebuilt with a unified service architecture and a new renewal system that automatically regenerates expired download links.

Null-Aware Filter Operators

Audience filters now support explicit null and not null operators, and null values are handled consistently across all comparison operators for more predictable query behavior.

Intent Query Reliability

Resolved several issues affecting intent-type audience queries, including field routing and error handling, so intent-based audiences now return consistent results.

Automatic Link Renewal

Download links for resolution exports are now automatically regenerated when they expire, eliminating the need to manually request new links. Background renewal jobs have been moved into a dedicated renewal service.

For full endpoint details, parameters, and examples, see our developer documentation.

January 31st, 2026

Audiences

We made major improvements to how audiences are built and managed.

Custom Lists in Audience Builder

You can now upload email, domain, or account lists and use them as include/exclude filters directly in the audience builder. Each list gets its own operator so you can combine multiple lists with precise control.

Intent Filtering

Audiences can now be filtered by intent topic and intent strength. You can also use AND/OR logic when selecting multiple intent topics, and intent topics are preserved correctly when editing an existing audience.

Clone and Download

You can now clone an existing audience to use as a starting point, and download audience data directly from the detail view.

Exports

The export pipeline received a significant overhaul this month.

Audience-Filtered Pixel Exports

You can filter pixel exports by audience, apply a resolved-only toggle, and control which contact fields appear in the output.

Incremental Exports

A new incremental mode with a configurable lookback window lets you export only new data since the last run, with server-side validation.

Better Reliability

Exports now use streaming for large audiences, handle timeouts with automatic retry, and correctly enforce record limits. Export record counts in Slack notifications and the connection overview are now accurate.

Notifications

Export completion emails now include direct links to the relevant export. Slack notifications have been cleaned up to reduce duplicates.

Contact Search

  • Multi-value filter operators (in/not-in) now work correctly in the condition builder.
  • Filters are automatically lowercased for case-insensitive matching.
  • Combobox dropdowns in the filter builder scroll properly with the page.

CRM Integrations

  • OAuth tokens now refresh automatically during CRM API calls, preventing mid-export failures.
  • CRM field listing errors are properly diagnosed and reported.
  • Audience data is polled and refreshed before CRM exports begin.

Bug Fixes

  • Fixed the list uploads page crashing with a React error.
  • Fixed export downloads failing to convert from Parquet to CSV.
  • Fixed the audience builder showing both empty states simultaneously.
  • Fixed pagination not resetting when taxonomy topic filters change.
  • Fixed pixel creation failing in certain database configurations.
  • Fixed picklist value delimiters in the segmentation UI.
  • Fixed export record counts showing 0 in all Slack notifications.