Delivr.ai Connector
The Delivr.ai connector ingests off-domain intent signals and per-member engagement data for buying unit candidate discovery. Delivr.ai is an internal API (team-controlled), providing high-quality content engagement signals that feed both the engagement scoring engine and the buying group intelligence layer.
Prerequisites
Before connecting Delivr.ai, you need:
- Access to the Delivr.ai internal API
- An API key issued by the Delivr.ai team
- The environment variables listed below
Environment Variables
| Variable | Description |
|---|---|
CONNECTOR_ENCRYPTION_KEY | 32-byte hex string (64 hex chars) for AES-256-GCM API key encryption |
DELIVRAI_API_URL | (Optional) Base URL override; defaults to https://api.delivr.ai |
Connector Settings (stored per-tenant)
| Setting | Description |
|---|---|
encryptedApiKey | AES-256-GCM encrypted Delivr.ai API key |
baseUrl | (Optional) API base URL override |
Authentication
Delivr.ai uses API key authentication via the X-Api-Key header. Keys are encrypted at rest using AES-256-GCM (same pattern as all connectors). Keys do not expire since this is an internal service.
Validation is performed against the health endpoint (/v1/health).
Data Flow
Two Data Streams
The connector pulls from two distinct API endpoints and combines them into a single SyncResult.
Stream 1: Intent Signals
Off-domain content engagement events showing which accounts and people are researching relevant topics.
| API Endpoint | /v1/intent-signals?since={iso}&limit=100 |
|---|---|
| Auth Header | X-Api-Key: {apiKey} |
| Pagination | Cursor-based via nextCursor |
| Backfill | 90 days on initial sync |
Intent Signal Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique event ID |
personId | string | Delivr.ai person identifier |
personEmail | string? | Email when identified |
accountDomain | string | Company domain |
contentUrl | string | URL of content consumed |
contentTopic | string | Topic category of the content |
occurredAt | string | ISO 8601 timestamp |
dwellTimeSeconds | number | Time spent on content |
sessionId | string | Browsing session identifier |
Stream 2: Member Engagement
Per-member aggregated engagement data used for buying unit candidate discovery. This stream feeds directly into the Phase 4 buying group intelligence layer.
| API Endpoint | /v1/member-engagement?since={iso}&limit=100 |
|---|---|
| Auth Header | X-Api-Key: {apiKey} |
| Pagination | Cursor-based via nextCursor |
| Backfill | 90 days on initial sync |
Member Engagement Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique event ID |
personId | string | Delivr.ai person identifier |
personEmail | string? | Email when identified |
accountDomain | string | Company domain |
buyingUnitRole | string? | Detected role (e.g., "Decision Maker", "Influencer") |
topics | string[] | Content topics engaged with |
engagementScore | number | Delivr.ai's own engagement score |
firstSeenAt | string | ISO 8601 -- first activity |
lastSeenAt | string | ISO 8601 -- most recent activity |
Member engagement events set isBuyingUnitCandidate: true in properties, allowing the buying group intelligence module to query for candidates without schema changes.
Event Transformation
Both data streams produce CanonicalActivity records with type: "intent_signal" and channel: "intent".
Intent Signal Output
{
externalId: "delivrai_abc123",
type: "intent_signal",
channel: "intent",
occurredAt: new Date("2026-03-01T10:00:00Z"),
personExternalId: "user@acme.com", // email preferred, falls back to personId
accountExternalId: "acme.com",
properties: {
source: "delivrai",
contentUrl: "https://example.com/whitepaper",
contentTopic: "cloud-security",
dwellTimeSeconds: 180,
sessionId: "sess_xyz",
}
}
Member Engagement Output
{
externalId: "delivrai_member_def456",
type: "intent_signal",
channel: "intent",
occurredAt: new Date("2026-03-01T12:00:00Z"),
personExternalId: "buyer@acme.com",
accountExternalId: "acme.com",
properties: {
source: "delivrai",
topics: ["cloud-security", "zero-trust"],
engagementScore: 85,
buyingUnitRole: "Decision Maker",
isBuyingUnitCandidate: true,
firstSeenAt: "2026-02-15T08:00:00Z",
lastSeenAt: "2026-03-01T12:00:00Z",
}
}
Default Field Mappings
| Source Field | Target Field | Transform | Required |
|---|---|---|---|
personId | personExternalId | none | Yes |
personEmail | email | lowercase | No |
accountDomain | accountExternalId | lowercase | Yes |
contentTopic | properties.contentTopic | none | No |
contentUrl | properties.contentUrl | none | No |
dwellTimeSeconds | properties.dwellTimeSeconds | none | No |
occurredAt | occurredAt | none | Yes |
Integration with Scoring
Intent signals from Delivr.ai contribute to the engagement scoring engine through the intent channel. Because Delivr.ai is a team-controlled internal API, its signals carry a high quality weight of 0.7 (on a 0-1 scale), reflecting the reliability of the data source.
Key properties used in scoring:
dwellTimeSeconds-- longer dwell times indicate stronger interestcontentTopic-- topic matching against ICP content preferencesengagementScore-- Delivr.ai's pre-computed engagement metric
Integration with Buying Groups
The member engagement stream powers the buying group intelligence layer:
- Events with
isBuyingUnitCandidate: trueare queried by the discovery module - The
buyingUnitRolefield maps to buying group role detection (Champion, Decision Maker, Influencer, etc.) topicsarrays feed into buying group topic affinity analysisaccountDomainlinks members to accounts for completeness scoring
Setup Steps
- Obtain an API key from the Delivr.ai team
- Navigate to Settings > Connectors in the GTM Clarity dashboard
- Click "Connect Delivr.ai" and paste your API key (encrypted at rest)
- Optionally set a custom base URL if using a non-production Delivr.ai environment
- Trigger initial sync to backfill 90 days of intent signal history
- Verify data flow by checking for
intent_signalactivities in the activity feed
Health Check
The health check validates the API key against the Delivr.ai health endpoint (/v1/health). A 200 response confirms the connector is operational.
Troubleshooting
| Issue | Cause | Resolution |
|---|---|---|
| Auth fails with 401 | Invalid or expired API key | Request a new key from the Delivr.ai team |
| No member engagement data | Endpoint not enabled | Confirm /v1/member-engagement is active for your API key |
Missing personEmail | Anonymous visitor | Expected -- personId is used as fallback for personExternalId |
| Intent signals not scoring | Topic mismatch | Verify content topics align with your configured engagement signal types |