Skip to content

Salesforce Trigger Webhook

Request

Handles instant enrichment on Salesforce record creation/updates via webhook.

Overview

The Salesforce Trigger API provides instant enrichment capabilities for Salesforce records through webhook-based triggers. It supports both real-time webhook processing and polling-based enrichment for comprehensive coverage of record changes.

Request Body

  • object: Salesforce object type that triggered the event (Lead, Contact, Account, Opportunity)
  • ids: List of Salesforce record IDs that changed
  • event: Salesforce trigger event type (after_insert, after_update, after_undelete)
  • org_id: Salesforce organization ID

Trigger Events

  • after_insert: Triggered when new records are created
  • after_update: Triggered when existing records are updated
  • after_undelete: Triggered when records are undeleted

Response Fields

  • success: Boolean indicating request success
  • processed_count: Number of records processed
  • enrichment_jobs: List of enrichment job IDs created
  • workflow_status: Status of the enrichment workflow (started, queued, failed)
  • credits_consumed: Number of credits used
  • credits_remaining (approximate balance; use GET /v1/credits/remaining for precise value)
  • processing_time_ms: Processing time in milliseconds
  • cached: Whether result was from cache

Enrichment Options

Webhook Processing (Real-time)

  • Immediate Processing: Records are processed immediately upon webhook receipt
  • Platform Events: Uses Salesforce Platform Events for reliable delivery
  • Apex Callouts: Triggered via Apex callouts from Salesforce triggers
  • Low Latency: Near real-time enrichment with minimal delay

Polling Processing (Fallback)

  • SOQL Queries: Polls Salesforce every 2 minutes for new/changed records
  • Watermark Tracking: Uses SystemModstamp and Id for efficient filtering
  • Batch Processing: Processes records in batches for optimal performance
  • Reliable Coverage: Ensures no records are missed even if webhooks fail

Features

  • Dual Processing: Both webhook and polling support for comprehensive coverage
  • Automatic Enrichment: Triggers enrichment workflows based on object type
  • Job Tracking: Creates enrichment jobs for monitoring and debugging
  • Credit Management: Tracks credit consumption per enrichment job
  • Error Handling: Robust error handling with retry mechanisms
  • Audit Trail: Comprehensive logging for compliance and debugging

Credit Usage

Trigger processing consumes credits based on enrichment type:

  • Lead Enrichment: 2 credits per lead
  • Contact Enrichment: 1 credit per contact
  • Account Enrichment: 3 credits per account
  • Opportunity Enrichment: 1 credit per opportunity
Security
BearerAuth
Bodyapplication/jsonrequired
objectstring(Object)required

Salesforce object type that triggered the event

Enum:"lead""contact""account""opportunity"
idsArray of strings(Ids)required

List of Salesforce record IDs that changed

eventstring(Event)required

Salesforce trigger event type

Enum:"after_insert""after_update""after_undelete"
org_idstring(Org Id)required

Salesforce organization ID

curl -i -X POST \
  https://api-gateway.agenthq.withlantern.com/v1/triggers/salesforce \
  -H 'Authorization: Bearer <YOUR_ApiToken_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "object": "lead",
    "ids": [
      "string"
    ],
    "event": "after_insert",
    "org_id": "string"
  }'

Responses

Success Response

Bodyapplication/json
successboolean(Success)required

Boolean indicating request success

processed_countinteger(Processed Count)required

Number of records processed

enrichment_jobsArray of strings(Enrichment Jobs)required

List of enrichment job IDs created

workflow_statusstring(Workflow Status)required

Status of the enrichment workflow

Enum:"started""queued""failed"
credits_consumedinteger(Credits Consumed)required

Number of credits used for this request

credits_remaininginteger or null(Credits Remaining)
Any of:

Approximate remaining credit balance. Use GET /v1/credits/remaining for precise balance.

integer
processing_time_msinteger(Processing Time Ms)required

Time taken to process the request in milliseconds

cachedboolean(Cached)required

Boolean indicating if this result was returned from cache

Response
{ "success": true, "processed_count": 2, "enrichment_jobs": [ "job_001", "job_002" ], "workflow_status": "started", "credits_consumed": 4, "credits_remaining": 950, "processing_time_ms": 850, "cached": false }