Skip to main content

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:

  1. Access to the Delivr.ai internal API
  2. An API key issued by the Delivr.ai team
  3. The environment variables listed below

Environment Variables

VariableDescription
CONNECTOR_ENCRYPTION_KEY32-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)

SettingDescription
encryptedApiKeyAES-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 HeaderX-Api-Key: {apiKey}
PaginationCursor-based via nextCursor
Backfill90 days on initial sync

Intent Signal Fields

FieldTypeDescription
idstringUnique event ID
personIdstringDelivr.ai person identifier
personEmailstring?Email when identified
accountDomainstringCompany domain
contentUrlstringURL of content consumed
contentTopicstringTopic category of the content
occurredAtstringISO 8601 timestamp
dwellTimeSecondsnumberTime spent on content
sessionIdstringBrowsing 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 HeaderX-Api-Key: {apiKey}
PaginationCursor-based via nextCursor
Backfill90 days on initial sync

Member Engagement Fields

FieldTypeDescription
idstringUnique event ID
personIdstringDelivr.ai person identifier
personEmailstring?Email when identified
accountDomainstringCompany domain
buyingUnitRolestring?Detected role (e.g., "Decision Maker", "Influencer")
topicsstring[]Content topics engaged with
engagementScorenumberDelivr.ai's own engagement score
firstSeenAtstringISO 8601 -- first activity
lastSeenAtstringISO 8601 -- most recent activity
Buying group integration

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 FieldTarget FieldTransformRequired
personIdpersonExternalIdnoneYes
personEmailemaillowercaseNo
accountDomainaccountExternalIdlowercaseYes
contentTopicproperties.contentTopicnoneNo
contentUrlproperties.contentUrlnoneNo
dwellTimeSecondsproperties.dwellTimeSecondsnoneNo
occurredAtoccurredAtnoneYes

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 interest
  • contentTopic -- topic matching against ICP content preferences
  • engagementScore -- Delivr.ai's pre-computed engagement metric

Integration with Buying Groups

The member engagement stream powers the buying group intelligence layer:

  1. Events with isBuyingUnitCandidate: true are queried by the discovery module
  2. The buyingUnitRole field maps to buying group role detection (Champion, Decision Maker, Influencer, etc.)
  3. topics arrays feed into buying group topic affinity analysis
  4. accountDomain links members to accounts for completeness scoring

Setup Steps

  1. Obtain an API key from the Delivr.ai team
  2. Navigate to Settings > Connectors in the GTM Clarity dashboard
  3. Click "Connect Delivr.ai" and paste your API key (encrypted at rest)
  4. Optionally set a custom base URL if using a non-production Delivr.ai environment
  5. Trigger initial sync to backfill 90 days of intent signal history
  6. Verify data flow by checking for intent_signal activities 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

IssueCauseResolution
Auth fails with 401Invalid or expired API keyRequest a new key from the Delivr.ai team
No member engagement dataEndpoint not enabledConfirm /v1/member-engagement is active for your API key
Missing personEmailAnonymous visitorExpected -- personId is used as fallback for personExternalId
Intent signals not scoringTopic mismatchVerify content topics align with your configured engagement signal types