Marketing to sales handover
Packet, acceptance, and in-app notify when a lead is sales-ready. Not “tell Sales”.
Document information
| Field | Value |
|---|---|
| Canonical URL | /docs/07_ai-agents-and-mcp/model_skills/50_handovers/marketing-to-sales-handover |
| Version (published date) | 2026-08-26 |
| Tags | ai, skills, handover, notifications, datapool |
Kind
Handover.
Depends on
tenant-data-model, marketing-lead-qualification.
Prerequisites
| id | question | search | if_missing_or_ambiguous | default_to_propose | binds_to |
|---|---|---|---|---|---|
handovers_schema | DataPool handovers schema | tenant-data-model | Import first | handovers | Tenant SKILL.md |
leads_schema | DataPool leads schema | tenant-data-model | Import first | leads | Tenant SKILL.md |
sales_notify_channel | Notify channel | Prefer in-app; do not assume Mattermost | Choice: in-app (default) or operator-named alternative | in_app_notification | Tenant SKILL.md |
sales_notify_recipient_user_id | Which tenant user receives the in-app notification? | entity_search / ask | request_human_input | None | Tenant SKILL.md |
Import contract
| Field | Value |
|---|---|
suggested_skill_id | marketing-to-sales-handover |
version | 1.0.0 |
capabilities.tools | describe_datapool_table, query_datapool, insert_datapool_rows, update_datapool_rows, list_notifications, request_human_input |
Packet DoD (generic B2B)
Required in packet_json before status=proposed:
lead_id,company_name- qualification outcome (
sales_ready) - contact (
contact_emailorcontact_name) source
Acceptance: Sales owner sets status=accepted and to_record_id (new or existing opportunity id). SLA to acknowledge: same calendar day unless the operator binds otherwise at import (optional note in SKILL.md).
Notify: Default in_app_notification to {{sales_notify_recipient_user_id}}. Title/body must include company name and lead_id. If no create-notification tool is in tools_active, set notify_status=pending on the handover row and surface to the current operator (Trace final answer) or Autonomic Agent need_human (platform in-app agent_waiting). Do not switch to Mattermost.
Tenant SKILL.md (copy this body)
# Marketing to sales handover
Write handovers to DataPool schema `{{handovers_schema}}`. Source leads: `{{leads_schema}}`.
Notify channel: `{{sales_notify_channel}}`. Recipient user id: `{{sales_notify_recipient_user_id}}`.
Load `datapool` and `notifications`. Load tenant skills `tenant-data-model` and `marketing-lead-qualification`.
## Sequence
1. Confirm lead `status=sales_ready` (qualification playbook).
2. Insert handover `kind=marketing_to_sales`, `from_record_id=lead_id`, `packet_json` with DoD fields, `status=proposed`, notify fields bound above.
3. Notify in-app to the bound user. If create is unavailable, `notify_status=pending` and `need_human` / tell the operator. Never assume Mattermost.
4. On accept: `status=accepted`, `accepted_at`, `to_record_id`. Do not mark the lead won.
## Stop
- Do not handover a `disqualified` or `new` lead.
- Do not invent a recipient user id.
Optional skill.json
{
"name": "marketing-to-sales-handover",
"version": "1.0.0",
"description": "Sales-ready lead packet, in-app notify, and acceptance on DataPool handovers.",
"capabilities": {
"prompt": ["Default notify is in-app. Packet DoD before proposed."],
"resources": [],
"tools": [
"describe_datapool_table",
"query_datapool",
"insert_datapool_rows",
"update_datapool_rows",
"list_notifications",
"request_human_input"
]
}
}