Lead lifecycle service for inbound enquiry ingestion, enrichment, outbound delivery, dealer config, Facebook and Heyflow ingestion, bot queueing, and event notifications.
Returns cached drive-away-guide finance quote for stock.
leadsBotQueue
POST
/leads/bot/queue
Public plus bearer check
Queues bot-originated lead payloads.
leadsDealerConfig
GET
/leads/config/dealers
API key
Lists dealer configs, optionally filtered by dealerIds.
leadsDealerConfig
GET
/leads/config/dealer/{dealerId}
API key
Reads one dealer config.
leadsDealerConfigPut
PUT
/leads/config/dealer
API key
Upserts dealer config.
leadsInboundQueue
POST
/leads/in/queue
Public
Validates and rate-limits inbound lead payloads, then queues to inbound SQS.
leadsInboundHeyflowQueue
POST
/leads/in/hf/queue
API key
Normalises Heyflow webhook submissions into inbound lead queue payloads.
leadsInboundFbQueue
GET
/leads/in/fb/queue
Public
Facebook webhook verification handshake.
leadsInboundFbQueue
POST
/leads/in/fb/queue
Public
Facebook leadgen webhook receiver.
leadsInboundFbProcess
POST
/leads/in/fb/process
API key
HTTP-mounted Facebook processing path; function also consumes SQS.
leadsOutboundQueue
POST
/leads/out/queue
API key
Queues outbound lead delivery.
leadsOutboundWebhookValidate
POST
/leads/out/webhook/validate
API key
Validates dealer webhook config and auth.
leadsOutboundEventProcess
POST
/leads/out/event
API key
Publishes lead allocation/event data; function also consumes SQS.
Local HTTP harnesses for SQS workers
These operations are documented in OpenAPI because they are useful for local evaluation and replay. In deployed stacks they are driven by SQS and are marked x-drive-deployment: local-test-http.
Function
Local method/path
Deployed trigger
Purpose
leadsInboundProcess
POST /leads/in/process
SQS
Sends enriched inbound lead to Salesforce and records lead events.
leadsInboundEnrich
POST /leads/in/enrich
SQS
Adds stock, vehicle, phone, and postcode enrichment before process queue.
leadsOutboundEnrich
POST /leads/out/enrich
SQS
Builds destination-specific payloads and fans out to outbound queues.
leadsOutboundCarsalesProcess
POST /leads/out/carsales
SQS
Delivers outbound lead to Carsales.
leadsOutboundEmailProcess
POST /leads/out/email
SQS
Builds and queues transactional email through the marketing service.
leadsOutboundAHGProcess
POST /leads/out/ahg
SQS
Delivers outbound lead to AHG LeadTracker.
leadsOutboundWebhookProcess
POST /leads/out/webhook
SQS
Delivers outbound lead to dealer webhook and writes delivery-log messages.
dealerBouncedEmailEventNotify
POST /leads/email/dealer/bounced/notify
SQS
Sends dealer bounced-email notification through marketing transactional email.
Additional workers
Function
Trigger
Purpose
leadsBotProcess
SQS
Processes queued bot leads.
leadsInboundFacebookProcess
SQS and HTTP
Fetches Facebook lead details and forwards into inbound queue.
leadsOutboundDriveAwayGuideProcess
SQS
Builds drive-away-guide output and queues follow-up email.
leadsOutboundDriveAwayGuideDLQProcess
SQS DLQ
Handles failed drive-away-guide messages.
leadsOutboundDeliveryLogProcess
SQS
Writes outbound delivery log data back to Salesforce.
Behaviour notes
POST /leads/in/queue applies a DynamoDB token bucket when rateLimitsEnabled is on for the stage. Exhaustion returns 429 and rate-limit headers.
Several SQS handlers return batchItemFailures on retryable message failures; the local HTTP harness returns normal API Gateway response objects.
Facebook webhook POST is public because Facebook cannot send the Drive API key; GET echoes hub.challenge for verification.
leadsInboundProcess supports dry-run behaviour through debug state and returns without Salesforce side effects.
Outbound delivery paths use stage-specific modes: Carsales and general outbound mode from custom.app.outboundMode, email mode from custom.app.emailMode.
Source map
Routes, queues, rate limits, and serverless-ifelse: services/leads/serverless.yml