- Standard activities: call, email, linkedin_message, sms, whatsapp. These have a fixed set of fields.
- Custom activities: activity types you define yourself (for example “Demo Booked” or “Trial Started”), each with its own schema of fields.
Configuration
Common activity attributes
These fields exist on every activity, standard or custom, and are the ones exposed to the filter engine (get_filter_schema with entity: "activity" or a custom_activity_<id> entity).
Standard activity types
Each standard activity is logged by identifying the contact (email, linkedin_url, or phone, matched against the contact’s own fields) and a properties object with the fields below. source is optional; omit it to use the implicit revyops source.
If a contact can’t be matched from email/linkedin_url/phone, the request is rejected: a matching contact is required for standard activities.
Call
POST /public/activities/standard/call/
POST /public/activities/standard/email/
This is a lighter-weight way to log an email event against a contact. For the full Email object (sends, replies, custom fields, and search) see Emails.
LinkedIn Message
POST /public/activities/standard/linkedin_message/
SMS
POST /public/activities/standard/sms/
POST /public/activities/standard/whatsapp/
Same fields as SMS.
Custom activity types and custom activities
A custom activity type is a definition you create once: a name, whether it applies to contacts or companies, and a field schema. Logging a custom activity is then a separate call that references the type and fills in its fields.Defining a type
POST /public/activities/types/ (also available through the MCP create_custom_activity_type tool, which additionally sets up the type’s scoring rule in one call).
PATCH /public/activities/custom/ updates a type’s name, schema, or applies_to by activity_key (the type’s id). DELETE /public/activities/custom/ removes a type by activity_key; it fails if activities already exist for it.
Logging an occurrence
POST /public/activities/custom/
Custom activity sources
Sources (also called origins) are the keys a sender puts insource when logging an activity. Every client has the implicit revyops source; additional sources (for example a webhook integration) can be registered and scoped to the activity types they’re allowed to send. See the MCP list_sources, create_source, update_source, and delete_source tools.
Relationships
- Contact: a standard or contact-scoped custom activity links to one contact, matched by email, LinkedIn URL, or phone at ingestion time. A contact’s activities are reachable through relations like
emails,calls,linkedin_messages,sms_messages,whatsapp_messages, and the custom activity relations exposed byget_filter_schema. - Company: a company-scoped custom activity links to one company, matched by domain.
- Person: a contact’s activities also roll up to that contact’s person record.
Scoring
Every scored activity is tied to a scoring rule with a weight (-100 to 100) and, optionally, a decay profile. Each time the activity occurs, its weight is added to the person’s or company’s total score. As the activity ages, its contribution fades according to its decay profile:-1 is persistent: it never decays. The total score shown in the UI is the sum of every scored activity’s current (post-decay) value.
A scoring rule can also carry a frequency cap, which limits how often an occurrence adds points to the same person: every time, once per time window, or once per distinct value of one of the activity’s fields. See the MCP list_scoring_rules and update_scoring_rule tools, and list_decay_profiles for managing decay profiles.
Related endpoints and MCP tools
Public APIPOST /public/activities/standard/call/,.../email/,.../linkedin_message/,.../sms/,.../whatsapp/GET/POST /public/activities/types/POST/PATCH/DELETE /public/activities/custom/
list_sources,create_source,update_source,delete_sourceset_activity_sourceslist_custom_activity_types,create_custom_activity_type,update_custom_activity_type,delete_custom_activity_typelist_scoring_rules,update_scoring_rulelist_decay_profiles,create_decay_profile,update_decay_profile,delete_decay_profileget_filter_schema,query_entity(entityactivity, or a specificcustom_activity_<id>)

