Event catalog

The authoritative source is each function’s registry.py. When this table and a registry disagree, the registry wins — and this page needs updating.

SQS events

CrmSyncQueue.fifo → morpheus-hubspot

Routing key: the event_type field inside the message body.

event_type Model Producer Purpose

Seller.CrmSync

SellerSyncEvent

enrichment-scorer

Upsert a HubSpot Company + Contacts, write ids back

Contact.Update

ContactUpdateEvent

phone-agent, web app

Generic Contact PATCH by HubSpot id

Contact.Unsubscribe

ContactUnsubscribeEvent

web app

Update Communication Preferences

Contact.ResolveHubSpotIds

ContactResolveHubSpotIdsEvent

manual, web app

Trigger-only backfill of hubspotContactId

Crm.NewActivity

CrmNewActivityEvent

web app

Create a logged Email object (+ follow-up Task, + AgentEmail event)

Crm.UpdateActivity

CrmUpdateActivityEvent

web app

PATCH an existing Email object

Crm.CustomEvent

CrmCustomEventEnvelope

web app

Send a whitelisted behavioural event

Crm.TaskCreate

CrmTaskCreateEvent

web app

Create a HubSpot Task, mirror in follow_up_tasks

Crm.DealUpdate

CrmDealUpdateEvent

web app

Set a Deal stage

Crm.DialerCallEnded

CrmDialerCallEndedEvent

web app dialer

Sync a completed AI call to HubSpot (+ Nooks)

Crm.HubSpotWebhook

CrmHubSpotWebhookEvent

webhook relay

Dispatch inbound HubSpot notifications

FollowUpTask.Sync

FollowUpTaskSyncEvent

phone-agent, web app

Sync a task’s status to HubSpot

EnrichmentPipelineQueue.fifo → enrichment-scorer

Routing key: the event_type SQS message attribute.

event_type Model Producer Purpose

SellerRecord.Received

SellerRecord

enrichment-scraper

A discovered seller to persist, enrich, and score

EmailAgentQueue → email-agent

Standard queue. Routing key: the event_type SQS message attribute.

event_type Model Producer Purpose

Email.IncomingCategorise

IncomingCategoriseEvent

web app

Classify an inbound reply

Resend.InboundEmail

ResendEmailReceivedEvent

Resend webhook relay

Inbound email received — logging stub

Email.SendInternal

none registered

phone-agent

Stage-1 escalation email — dropped, no handler

Scheduled events

Routing key: detail-type at the event root, set by the rule’s Input.

detail-type Consumer Rule enabled Purpose

SellerDiscovery.Amazon

enrichment-scraper

commented out

SmartScout seller discovery

SellerDiscovery.Walmart

enrichment-scraper

commented out

Stub — raises NotImplementedError

SellerDiscovery.RunCategory

enrichment-scraper

no rule

Stub — ad-hoc per-category discovery

Scraper.BigQueryContactSync

enrichment-scraper

yes

Mirror HubSpot contacts from BigQuery

Seller.EnrichPending

enrichment-scorer

commented out

Backfill enrichment

Seller.ScorePending

enrichment-scorer

commented out

Backfill payout-pain scores

Hubspot.FollowUpTaskPoll

morpheus-hubspot

yes

Poll HubSpot for completed tasks

Hubspot.ContactResolve

morpheus-hubspot

yes

Wide-search HubSpot id resolution

Hubspot.BigQueryEngagementSync

morpheus-hubspot

yes

Mirror engagements into Activity

Hubspot.EmailClickReEngagement

morpheus-hubspot

yes

Email-click segment

Hubspot.SupplierAccountReEngagement

morpheus-hubspot

yes

Supplier account segment

Hubspot.UnattendedMeetingReEngagement

morpheus-hubspot

yes

Meeting no-show segment

Hubspot.LostDealReEngagement

morpheus-hubspot

yes

Lost/stalled deal segment

Hubspot.SalesRepCallListRefresh

morpheus-hubspot

yes

Rebuild per-rep HubSpot call lists

Hubspot.Five9CallSync

morpheus-hubspot

yes

Import Five9 CSV call logs

Phone.LineIntelPending

phone-agent

yes

Twilio line intelligence

Phone.TaskDeadlineReminder

phone-agent

yes

Slack reminders + escalation

Phone.CampaignTargetReEngagement

phone-agent

yes

Amazon seller campaign segment

AgentCore workflows

Not events, but the third named-invocation surface. Registered in agentcore/workflows/init.py.

Workflow Payload Purpose

test

{"prompt": "…"}

Direct prompt passthrough

dialler-agent

{"phoneNumber": "…"}

Analyse HubSpot history, prepare a call brief

Where models live

Location Contents

libs/morpheus-common/morpheus_common/events/models.py

Every cross-function event: SellerSyncEvent, ContactSyncPayload, ContactUpdateEvent, ContactUnsubscribeEvent, SubscriptionPreferenceUpdate, ContactResolveHubSpotIdsEvent, CrmNewActivityEvent, CrmUpdateActivityEvent, CrmTaskCreateEvent, CrmDealUpdateEvent, CrmDialerCallEndedEvent, CrmHubSpotWebhookEvent, HubSpotWebhookInnerEvent, FollowUpTaskSyncEvent

libs/morpheus-common/morpheus_common/events/custom_events.py

CustomEventKind, CrmCustomEventAgentEmail, CrmCustomEventEnvelope, and the HubSpot event-name helpers

lambdas/enrichment_scraper/models/

SellerRecord, SellerDiscoveryEvent, RunCategoryEvent, ScheduledEvent

lambdas/enrichment_scorer/models/

SellerRecord (consumer-side), ScheduledEvent

lambdas/email_agent/models/

IncomingCategoriseEvent, ResendEmailReceivedEvent, ScheduledEvent

lambdas/phone_agent/models/events.py

ScheduledEvent

lambdas/morpheus_hubspot/models/config.py

ScheduledEvent

Each function defines its own ScheduledEvent — a permissive extra="ignore" model with a single optional source field. They are not shared, because a scheduled event carries no payload worth a shared contract.

Coverage gaps

Gap Status

Email.SendInternal

Published by phone-agent, no handler registered. Messages are logged and deleted.

Resend.InboundEmail

Registered, but the handler only logs. Intended behaviour is in its module docstring.

SellerDiscovery.Walmart

Registered, raises NotImplementedError. Rule disabled.

SellerDiscovery.RunCategory

Registered, raises NotImplementedError. No rule.

Crm.NewActivity activity_kind

Only "email" supported; anything else raises.

Crm.UpdateActivity object_type

Only "emails" supported; anything else raises.

Crm.CustomEvent custom_event_kind

Only agent_email whitelisted.