> ## Documentation Index
> Fetch the complete documentation index at: https://heybtw.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Did anyone follow up, and what did the event do for pipeline

> Keep what was committed apart from what the CRM shows, nudge the owners who are behind, and read what the event did for pipeline.

## What you get

A few days after an event, Claude tells you two separate things: which follow-ups your team committed to, and which attendees your CRM shows were actually contacted. It drafts nudges for owners who are behind and sends them only on your go. Then it reads what the event did for pipeline, with sourced and influenced kept apart and nothing credited before the event day.

## Before you start

* The event is past and its attendees are recorded. See [Record who registered and who came](https://heybtw.com/docs/playbooks/record-who-came.md).
* Follow-ups were committed as tasks, usually in the [debrief](https://heybtw.com/docs/playbooks/morning-after.md).
* Touch status and attribution come from a CRM connected inside heyBTW. Without one, Claude reads your CRM through your own connector and says the read is its own. See [Connect](https://heybtw.com/docs/playbooks/connect-crm-and-event-platform.md).

## Two facts, never one

| Question | Tool | What it is |
| - | - | - |
| What did we commit to? | [get\_due\_tasks](https://heybtw.com/docs/tools/get-due-tasks.md) | Tasks: open, overdue or completed. A commitment, never evidence of contact |
| Who was actually contacted? | [get\_attendee\_touch\_status](https://heybtw.com/docs/tools/get-attendee-touch-status.md) | Touches inferred from activity logged in the CRM. Evidence, never a commitment |

Claude reports these separately. A completed task does not mean someone was reached, and a touch does not close a task.

## Steps

**1. Start the follow-through**

Say: "Did anyone follow up after the Austin dinner?"

Claude runs the `follow_through` prompt, meant from the third day after the event, in the `wind_down` window. If it is day 1 or 2, it says follow-up may not have happened yet and offers the debrief first.

**2. Read the commitments**

Claude calls [get\_due\_tasks](https://heybtw.com/docs/tools/get-due-tasks.md) for the collab with `status: "open"` (overdue included), then `status: "completed"`. heyBTW decides overdue, not Claude: each row's `status` is computed against the collab's local date. A task with a `due_gap` has no due date and is never called overdue. This row is trimmed from a real response today:

```json theme={null}
{
  "title": "Send Theo the proposal",
  "owner_email": "tony@heybtw.com",
  "contact": { "contact_email": "theo.lombardi@ironwoodsys.com" },
  "due_date": "2026-09-30",
  "due_timezone": "America/Chicago",
  "due_gap": null,
  "event_window": "wind_down",
  "status": "overdue"
}
```

**3. Read the evidence**

Claude calls [get\_attendee\_touch\_status](https://heybtw.com/docs/tools/get-attendee-touch-status.md) for the collab. `window_days` defaults to 7 (1 to 90). Each attendee has a `touch_state`: `touched`, `untouched`, `unknown_no_crm_match` or `unresolved`. The last two are never counted as untouched. `activity_source.activity_types` names what the CRM read covered; a type not listed was not read. This summary is trimmed from a real response today:

```json theme={null}
{
  "summary": {
    "total": 28,
    "touched": 0,
    "untouched": 25,
    "unknown_no_crm_match": 3,
    "unresolved": 0
  },
  "activity_source": {
    "provider": "attio",
    "activity_types": ["meeting", "note"],
    "sequence_sends_distinguishable": false
  }
}
```

Here "untouched" means no logged meeting or note, because emails and calls were not read. Claude says that.

The CRM activity is read only for the attendees on the current page, and the summary counts the others as unresolved. Use the default page size when you want the summary.

With no CRM connected inside heyBTW, the answer is `status: "partial"` and `crm_context.capability_served` is false. Attendees read `not_evaluated`. Claude checks each one in your own CRM connector for an outbound email, call, meeting held or note inside the window, records each it finds with [record\_observation](https://heybtw.com/docs/tools/record-observation.md) as `followed_up` with `source: "agent_crm_read"`, and presents them as its read of your CRM.

**4. Nudge the owners who are behind**

Claude reads each untouched person's basis from their row in [get\_event\_details](https://heybtw.com/docs/tools/get-event-details.md), and nudges already recorded, then lists by owner: open and overdue tasks, and attendees still untouched. It keeps four claims apart: committed, delivered, nudged and touched.

Say: "Draft a nudge to Tony about the overdue ones."

Claude drafts one short nudge per owner in your voice. It leaves out anyone nudged in the last 3 days and anyone who cancelled, and never describes an RSVP-only person as having attended. It sends only on your go, through your own chat or mail connector. With the message ID or thread link the connector returned, it records a `nudged` fact with [record\_observation](https://heybtw.com/docs/tools/record-observation.md). Without proof it records nothing. A nudge is never a touch, and no task changes because a nudge went out.

**5. Read what the event did for pipeline**

Say: "What did the Austin dinner do for pipeline?"

Claude calls [get\_event\_attribution](https://heybtw.com/docs/tools/get-event-attribution.md) for the collab and reports `pipeline` as served: `sourced_revenue` (the event created the opportunity) and `influenced_revenue` (the event touched an existing one that progressed) are separate, and `total_revenue` is their sum. `won_revenue` is a subset already inside them, never added on top. `attribution_breakdown` lists each deal with its `attribution_type` and stage.

Nothing is attributed to an event before its event day. An upcoming event reads `event_tense: "upcoming"`, a pipeline of 0 and a gap. Its `registered_account_pipeline` is the open pipeline of the accounts registered for it. It is not attribution: never report it as sourced, influenced or won, and never add it to totals. This row is trimmed from a real response today:

```json theme={null}
{
  "event_name": "ScaleUp.ai x Partners: SF Tech Week Open House",
  "event_tense": "upcoming",
  "pipeline": { "total_revenue": 0, "sourced_revenue": 0, "influenced_revenue": 0, "won_revenue": 0 },
  "registered_account_pipeline": { "open_pipeline": 1527000, "deal_count": 11, "account_count": 11 }
}
```

**6. Roll it up across the program**

Say: "Give me the program summary for this quarter."

Claude calls [get\_program\_report](https://heybtw.com/docs/tools/get-program-report.md) with `time_range` (last\_30\_days, this\_quarter, last\_quarter, ytd or program\_total). It serves the dashboard's own funnel, one row per event, `program_summary.cost_per_meeting`, `velocity_comparison` and coverage, each naming its source. It computes nothing of its own. For the headline number on the dashboard, Claude quotes `attribution_summary.total_event_attributed_pipeline` from [get\_workspace\_overview](https://heybtw.com/docs/tools/get-workspace-overview.md).

## Watch the flow, not just the totals

A total says where things stand. A program needs how much entered each stage: new registrations, first meetings, new opportunities. Before the event, read pace from [get\_event\_details](https://heybtw.com/docs/tools/get-event-details.md) `goal.pace`. After it, compare the per-event rows of get\_program\_report period over period. When an event's meetings never become opportunities, the room or the qualification was wrong: say so before the next one is planned.

## Say it in people and deals

Percentages alone don't decide budget. Translate the served numbers into a sentence a leader can act on:

> This dinner cost about $X all in, including our time. It produced N first meetings and M opportunities worth $P. At this rate, one a month is a program.

Use only figures heyBTW served, each with its source and window.

## Keep the record whole

Results are only as good as the record behind them: every invite recorded from every channel ([Fill the room](https://heybtw.com/docs/playbooks/invite-sprint.md)), every yes and no on the roster ([Record who came](https://heybtw.com/docs/playbooks/record-who-came.md)), who came and who met whom ([The morning after](https://heybtw.com/docs/playbooks/morning-after.md)), and follow-ups found in the CRM recorded with [record\_observation](https://heybtw.com/docs/tools/record-observation.md) `followed_up`. [get\_data\_health](https://heybtw.com/docs/tools/get-data-health.md) names what is still missing.

## Pair it with your tools

| Job | Tools you might use | What to ask Claude |
| - | - | - |
| See who was actually followed up | HubSpot, Salesforce or Attio (inside heyBTW for touch status, or its connector in Claude) | "Which Austin attendees have no logged meeting or note in Attio since the dinner?" |
| Nudge owners who are behind | Slack or Gmail | "Nudge each owner in Slack with their untouched attendees, and record each nudge in heyBTW." |
| Pull deal detail behind the pipeline number | Your CRM | "For the deals heyBTW attributes to the NYC open house, show stage and amount from Salesforce." |
| Share the results | Google Slides, a doc, or Slack | "Turn the program report into three slides for Monday's pipeline review." |

## What heyBTW will and won't do

* It never changes a task because the CRM shows a touch or a nudge went out. Only the owner's completion closes a task.
* It never sends a nudge and never writes to your CRM.
* Every touch is inferred from logged CRM activity. Claude says what the CRM shows, not that someone was contacted.
* A null funnel count is unknown, never zero.

## Related

* [The morning after](https://heybtw.com/docs/playbooks/morning-after.md)
* [get\_attendee\_touch\_status](https://heybtw.com/docs/tools/get-attendee-touch-status.md)
* [get\_event\_attribution](https://heybtw.com/docs/tools/get-event-attribution.md)
* [heyBTW MCP rules](https://heybtw.com/docs/mcp/rules.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.