The 12 Plays
Play 1Intermediate~25 min read

Hands-Free CRM

Eliminate manual data entry by automatically logging every email, meeting, and call to your CRM.

The business case

At most professional services firms, CRM field completeness runs between 40% and 60% - not because the team doesn't care, but because manual entry competes directly with billable work, and billable work wins every time. The result is pipeline data that doesn't reflect reality: deals marked "Active" that went dark four months ago, partners making resource decisions based on stale opportunity data, and client relationships eroding silently because no one logged the last three conversations. The average firm with 20 client-facing staff loses approximately $315,000 in partner capacity annually to manual CRM updates - and that's before you count the deals lost because follow-ups were invisible. This Play eliminates manual entry entirely by routing every email, calendar event, and call transcript through an AI agent that extracts the relevant information and writes it directly to the appropriate CRM record.

What this play does

Three separate n8n workflows run continuously in the background. The email logging workflow polls every connected inbox every five minutes, identifies emails involving known CRM contacts, passes each email to an AI node that extracts contact, company, sentiment, action items, and follow-up signals, then writes a structured activity log to the matching CRM record. The calendar logging workflow fires on every new or updated calendar event, checks attendees against your CRM contact database, and creates activity entries for past meetings or preparatory tasks for upcoming ones. The daily digest workflow runs each morning at a time you configure and delivers an AI-generated account summary to each partner - flagging accounts that have gone quiet, follow-ups that are overdue, and opportunities that need attention. Field completeness moves from 40 - 60% to 95%+ within the first four weeks.

Before and after

Before

Employees are supposed to log all client interactions manually. In practice, roughly 40% of calls get logged, 60% of emails are tracked, and meeting notes are entered inconsistently at best. Pipeline data is perpetually stale. Decision-making is built on incomplete information. Nobody knows which deals are genuinely active until someone manually digs through their inbox - by which time, some of them are already lost.

After

Every email to and from a CRM contact is automatically logged with an AI-generated summary, sentiment assessment, and extracted action items. Every client meeting appears as an activity record with attendee notes. Call transcripts are processed and parsed into the appropriate CRM fields without anyone typing a word. Each morning, partners receive a digest that surfaces accounts that have gone quiet, follow-ups that are overdue, and opportunities requiring attention. The team spends their time on relationships, not recordkeeping.

Business impact

Twenty partners spending 45 minutes per week on manual CRM updates - a conservative estimate - represents 900 partner-hours annually. At a $350 billing rate, that's $315,000 in partner capacity going to data entry every year. Beyond the time savings, the revenue impact is difficult to fully quantify but easily dwarfs the efficiency gains. One consulting firm using this Play recovered a $225,000 engagement from a relationship that had gone invisible because their new system made the silence visible for the first time. Firms that implement this Play consistently report pipeline accuracy improvements of 40 - 60 percentage points within 60 days, and meaningful reductions in deals lost due to missed follow-up.

Hands-Free CRM Calculator

Projected Annual Savings

$312,500

recovered capacity

By automating CRM entry via email tracking, calendar logging, and meeting transcription, you reclaim 1,250 hours per year across the team. Look at what could be billed if that time was redirected to client work.

Done-For-You Implementation

Want to skip the technical setup? Revenue Institute can build and integrate this playbook securely into your CRM.

Explore Implementation

Prerequisites

Complete these before opening n8n. Skipping prerequisites is how you end up rebuilding workflows.

1

Confirm CRM API access

HubSpot, Salesforce, and most modern CRMs support API integration. You need an API key or OAuth credentials. Find the 'API' or 'Integrations' section in your CRM settings before you start building. If you're on a legacy platform, check whether it supports REST API access or has a native n8n node.

2

Identify every inbox that needs monitoring

List every email account that handles client and prospect communication: individual partner inboxes, shared addresses like hello@ or clients@, and any role-based inboxes. Start with one inbox. Get it working completely before adding others. Debugging across five simultaneously connected inboxes is significantly harder than debugging one.

3

Map your CRM fields

Open a well-populated contact record in your CRM and write down every field that should reflect client activity: last contact date, last meeting date, activity history, open action items, opportunity stage, sentiment notes. You'll map your workflow outputs to these fields. Know what you're mapping to before you build the mapping.

4

Identify your call transcription tool

If your team uses Fireflies, Fathom, Otter, or Gong, these generate transcripts you can route through the workflow automatically. If you don't have one, every cloud phone system offers recording and you can use an AI node to handle transcription. Decide this before you build the workflow so you know which transcript source to connect.

5

Name the exception queue owner

This is the person who reviews emails and contacts flagged by the AI as needing human attention: potential new contacts, accounts that have gone silent beyond 21 days, and workflow errors. One named person with a named backup for vacation coverage. Not 'the team.' One person.

6

Set a baseline field completeness number

Before going live, pull a field completeness report from your CRM. You need a 'before' number to demonstrate the 'after.' Most CRMs have a built-in data health report, or you can export contacts and calculate it in a spreadsheet. Thirty minutes of work before launch makes the ROI case undeniable afterward.

Step-by-step implementation

The steps below are the full build guide. Each step includes configuration notes and exact AI prompts where applicable.

1

Set up n8n and connect your first inbox

Self-hosted n8n is the recommended setup for professional services firms - you own the data and control where it goes. Provision an Ubuntu server with at least 2GB of RAM from DigitalOcean, Google Cloud, or Azure (budget $12 - 18/month). Run the server setup commands from the resource site, install n8n via Docker or npm, configure NGINX for HTTPS access, and set up a persistent process manager so n8n restarts automatically if the server reboots. If the server setup feels like too much, install OpenCode on the server and tell it to set up n8n. It handles the configuration automatically from a plain-English instruction. Either way, the full setup guide with copy-paste commands is at workforceplaybook.ai. Once n8n is running, connect your first email inbox via the Gmail or Outlook trigger node. Use OAuth authentication - n8n walks you through the authorization flow step by step. Set the polling interval to five minutes. This means n8n checks for new emails every five minutes and queues them for processing. Send a test email from an address you know is in your CRM and confirm it appears in n8n as an execution.

2

Build the contact lookup filter

Before any email gets passed to the AI, you need to verify that the sender or recipient is a known contact in your CRM. This filter is what separates CRM activity logs from noise. Without it, you'll fill your CRM with vendor newsletters, internal messages, and recruiting emails. Add an HTTP Request node after the email trigger. Configure it to call your CRM's contact search API endpoint with the sender's email address as the search parameter. In HubSpot, this looks like: GET https://api.hubapi.com/crm/v3/objects/contacts/search with a filter on the email property. In Salesforce, you'll query the Contact object via SOQL. Most other CRMs have equivalent lookup endpoints - check the API documentation under "Search Contacts" or "Find Contact by Email." If the lookup returns a contact, save the contact ID and the full contact record to an n8n variable and continue to the AI node. If the lookup returns no results, route to an exception handler that checks whether the email might be a new prospect worth flagging (see Step 4 on edge cases).

Configuration Notes

HubSpot contact search request:
Method: POST
URL: https://api.hubapi.com/crm/v3/objects/contacts/search
Headers:
  Authorization: Bearer {{your_api_key}}
  Content-Type: application/json
Body:
{
  "filterGroups": [{
    "filters": [{
      "propertyName": "email",
      "operator": "EQ",
      "value": "{{$json.from.email}}"
    }]
  }],
  "properties": ["firstname", "lastname", "company", "email", "hubspot_owner_id"]
}
3

Configure the AI extraction node

Add an OpenAI or Anthropic (Claude) node after the contact lookup. This node reads the full email content and extracts everything your CRM needs in a structured format. The quality of this prompt determines the quality of your CRM data - spend time on it. Configure the node with your API key. Use the "Chat" completion mode. In the User Message field, pass the full email data from the previous node using the expression {{$json}}. In the System Message, use the prompt below. The AI returns a JSON object. Map each field from that JSON to the corresponding CRM field in your write node. If the AI returns follow_up_required as true, trigger a second CRM action that creates a task on the contact record with the follow_up_notes as the task description and a due date of today.

AI Prompt

You are a CRM activity logger and sales operations specialist for a professional services firm. Your job is to read client and prospect emails and extract the key information needed for an activity log entry.

Analyze this email carefully, then return ONLY a valid JSON object with these exact fields:

{
  "contact_name": "Full name of the primary external contact",
  "company": "Company or firm name of the external contact",
  "email_address": "Email address of the external contact",
  "communication_date": "ISO 8601 date string",
  "communication_direction": "inbound or outbound",
  "subject": "Email subject line",
  "summary": "2-3 sentence summary of the email content and its significance to the relationship",
  "action_items": ["Array of specific commitments or next steps mentioned"],
  "sentiment": "positive, neutral, or needs_attention",
  "sentiment_reason": "One sentence explaining the sentiment assessment",
  "follow_up_required": true or false,
  "follow_up_notes": "If follow_up_required is true: exactly what needs to happen, by whom, and by when if mentioned",
  "opportunity_signals": ["Any signals that indicate a new or expanded opportunity"],
  "risk_signals": ["Any signals that indicate dissatisfaction, delay, or relationship risk"]
}

Flag follow_up_required as true if: a question was asked that hasn't been answered, a deadline or deliverable was mentioned, a commitment was made by your firm, or the email tone suggests urgency or dissatisfaction. Return only the JSON object with no additional text.
4

Write the activity to your CRM

After the AI extraction, write the structured data back to your CRM as an activity record. For HubSpot and Salesforce, n8n has native nodes - search for your CRM name in the node library. For industry-specific platforms (Clio, Karbon, ServiceNow, Cosential, etc.), use the HTTP Request node with your CRM's activity creation endpoint. The field mapping process is the same regardless of which node you use. Map AI output fields to CRM fields: - activity_type → "Email" (hardcoded) - activity_date → email timestamp - subject → email subject - notes → AI-generated summary + action items formatted as a bulleted list - sentiment → custom CRM property if available - contact_id → ID returned from your contact lookup in Step 2 - owner_id → the CRM owner assigned to that contact After writing the main activity, if follow_up_required is true, create a separate CRM task on the contact record with the follow_up_notes as the task description, assigned to the contact owner, due today. This creates a visible queue of items that need human attention. Test the complete workflow end-to-end: send a test email from an address that exists in your CRM, watch it flow through n8n, and verify the activity appears on the correct CRM record with the correct content. Check that field mapping is accurate and that follow-up tasks are created when appropriate before moving to the calendar workflow.

Configuration Notes

HubSpot activity creation (if using HTTP Request node):
Method: POST  
URL: https://api.hubapi.com/crm/v3/objects/notes
Headers:
  Authorization: Bearer {{your_api_key}}
  Content-Type: application/json
Body:
{
  "properties": {
    "hs_note_body": "{{$json.summary}}\n\nAction Items:\n{{$json.action_items.join('\n')}}",
    "hs_timestamp": "{{$json.communication_date}}",
    "hs_note_subject": "Email: {{$json.subject}}"
  },
  "associations": [{
    "to": {"id": "{{contact_id}}"},
    "types": [{"associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 202}]
  }]
}
5

Build the calendar logging workflow

Create a second, separate workflow for calendar events. The trigger is a Google Calendar or Outlook Calendar node configured to fire when a new event is created or an existing event is updated. Authenticate it the same way you authenticated the email workflow. After the trigger, add the same contact lookup logic from the email workflow - cross-reference attendee email addresses against your CRM contact database. If any attendee matches a known contact, continue. If none match, stop the workflow. The calendar workflow branches based on event timing. Add an IF node that compares the event end time against the current time. For past events (meeting already occurred): pass the calendar event data to an AI node to generate a meeting activity log. For upcoming events (meeting hasn't happened yet): create a preparatory task on each matched contact record, with text like "Review account history before [Meeting Title] on [Date]." For past events, use this AI prompt structure:

AI Prompt

You are a CRM activity logger. A client meeting has just completed.

Based on the calendar event details provided, create a CRM activity log entry.

Return ONLY a valid JSON object with these exact fields:

{
  "contact_names": ["Array of attendee names matched to CRM contacts"],
  "meeting_date": "ISO 8601 date string of when the meeting occurred",
  "meeting_duration_minutes": number,
  "meeting_title": "Title of the calendar event",
  "activity_summary": "2-3 sentences describing the meeting context, who attended, and what it was about based on the event details",
  "follow_up_required": true or false,
  "follow_up_notes": "If follow_up_required is true: what specifically should happen after this meeting",
  "next_meeting_suggested": true or false
}

If the meeting title or description contains words like 'debrief', 'review', 'proposal', 'pitch', or 'follow-up', set follow_up_required to true. Return only the JSON object with no additional text.
6

Handle contact matching edge cases

The contact matching logic is where most implementations fail. Three edge cases will appear in your first two weeks of production use - build the handling logic before you go live, not after you've generated bad data. **Multiple email addresses per contact**: A client might email you from their work address while their assistant schedules meetings from an assistant's address. Update your contact lookup to search all email fields on the contact record, not just the primary email. If your CRM allows multiple email addresses per contact, confirm your lookup searches all of them. **Unknown senders who might be prospects**: When the contact lookup returns no match, don't stop the workflow silently. Route these emails to your exception queue with: sender name, email address, company domain extracted from the email address, email subject, and a one-sentence AI-generated summary of what the email was about. The exception queue owner reviews these daily and decides whether to create a new CRM record. This prevents you from missing early-stage prospect conversations. **Internal and noise filtering**: Add an IF node that checks whether the sender's domain matches your own firm's domain. Internal emails between your team members should never generate CRM activity logs. Also filter emails containing: "unsubscribe," "@yourdomain.com" as sender, "resume" or "CV" in the subject, "notification" or "alert" in the subject, "invoice" or "receipt" if you don't want those logged. Build these filters before going live. The cost of cleaning up corrupted CRM data afterward is far higher than building the filters correctly upfront.

7

Build the daily digest workflow

Create a third workflow - entirely separate from the email and calendar workflows - that runs on a schedule each weekday morning. This workflow delivers an AI-generated account summary to each partner, flagging accounts that have gone quiet, overdue follow-ups, and opportunities requiring attention. The trigger is a Schedule node configured for 7 AM on weekdays (or whatever time your team starts their day). After the trigger, add a CRM query that pulls all active opportunities and accounts, then for each account, retrieves all activity logged in the last 14 days. Pass this data to an AI node using the digest prompt below. After the AI generates the digest, add an email send node that delivers it to each partner whose accounts were included. Format flagged accounts at the top - "Needs Attention," "Overdue Follow-Up," "Review Recommended" - followed by routine accounts below. Test by running the workflow manually before enabling the automated schedule. Review the output yourself: are account groupings correct, are flags firing on the right accounts, is the formatting readable on mobile?

AI Prompt

You are a client relationship manager for a professional services firm. Each morning you review account activity and prepare a brief digest for internal employees.

Here is the account activity data for the past 14 days: {{$json}}

For each account, generate a 2-3 sentence summary of recent activity. Apply these flags exactly as specified:

- "NEEDS ATTENTION" - if the account has had no logged activity in the last 14 days
- "OVERDUE FOLLOW-UP" - if the account has an open task with a due date that has already passed  
- "REVIEW RECOMMENDED" - if recent communication sentiment has been 'needs_attention' on two or more logged activities

Format the output as a clean email digest with:
1. A header line: "Account Activity Digest - [Today's Date]"
2. Flagged accounts section (NEEDS ATTENTION first, then OVERDUE FOLLOW-UP, then REVIEW RECOMMENDED)
3. Active accounts section (alphabetical by account name, one paragraph each)

Keep each account summary to 3 sentences maximum. Write in plain, direct language without corporate filler. The goal is to give each partner exactly what they need to know in under 2 minutes of reading.
8

Set up the exception queue and go live

Create a dedicated Slack or Teams channel - name it something unambiguous like #crm-exceptions or #crm-queue. Set the exception queue owner as the channel manager with their backup listed in the channel description. Route three categories of items to this queue: 1. Potential new contacts identified in emails or calendar events where no CRM match was found (include sender name, email, company domain, and email subject) 2. Accounts flagged "Needs Attention" in the daily digest that have been silent for more than 21 days (include account name, assigned partner, last logged activity date, current opportunity stage, and any open tasks) 3. Workflow errors where AI extraction produced a confidence issue or a CRM write failed Go live in phases. Week 1: email workflow active on one inbox, exception queue monitored daily. Week 2: add remaining inboxes one at a time after verifying each one produces clean data. Week 3: activate calendar workflow and daily digest. Week 4: full production with weekly tuning sessions based on exception queue patterns. Announce the system to your team before going live. Explain exactly what it does: it logs their client communications to the CRM automatically, so they don't have to. Frame it as removing a burden, not as surveillance. This matters for adoption.

Week-by-week rollout plan

Week 1Foundation
  • Days 1 - 2: Set up n8n. Connect first email inbox. Confirm emails trigger the workflow.
  • Days 3 - 4: Build contact lookup logic. Test against 20 email addresses (known contacts, unknowns, internal). Verify matching accuracy.
  • Day 5: Map CRM fields on paper. Document every field that should be populated and confirm API write access for each.
Week 2Email Logging
  • Days 6 - 7: Build AI summarization node. Test against 15 - 20 historical emails. Review every output for accuracy, action item extraction, and sentiment.
  • Days 8 - 9: Connect CRM write node. Run 10 test emails end-to-end. Open each resulting CRM record and verify the activity log entry.
  • Day 10: Fix edge cases. Address OAuth token issues, field mapping mismatches, and character limit problems in notes fields.
Week 3Calendar and Digest
  • Days 1 - 2: Build calendar logging workflow. Test with events that include known CRM contacts as attendees.
  • Days 3 - 4: Build daily digest workflow. Run manually and review output for grouping accuracy, flag accuracy, and formatting.
  • Day 5: Walk through everything with the exception queue owner. Confirm they understand each item type and the expected action.
Week 4Launch and Tuning
  • Day 1: Go live on email and calendar logging. Announce to the team.
  • Days 1 - 5: Monitor exception queue daily. Document edge cases and add handling logic as they appear.
  • Day 3: First review - open 5 active client CRM records and verify activity logs reflect reality.
  • Day 7: First tuning session. Refine AI prompts, adjust contact matching for edge cases, review digest output with partners.

Success benchmarks

These are the specific, measurable signals that confirm the play is working. Check against each benchmark at the 30-, 60-, and 90-day mark.

CRM field completeness above 95% on active account and opportunity records by Week 6
Activity logs present on 95%+ of active contacts updated in the last 30 days
Zero deals active for more than 30 days with no logged activity
Daily digest open rate above 80% among partners
Exception queue volume declining week over week as contact matching logic improves

Common mistakes

Skipping contact matching edge cases

The three error scenarios (multiple email addresses, unknown senders, internal emails) will all appear in your first week. Build the handling logic before you go live, not after you've generated two weeks of bad data. Cleaning up corrupted CRM records is far more expensive than building the filters.

Connecting too many inboxes at once

Start with one email account. Get it working perfectly - clean contact matching, accurate AI extraction, verified CRM write. Then add inboxes one at a time. Debugging a contact matching problem across five simultaneously connected inboxes is genuinely harder.

Not reviewing the daily digest before sending to the team

Run the digest manually for a full week and review it yourself before enabling the automated send. If the output isn't useful or flags are firing incorrectly, your team will ignore it - and you'll lose the relationship visibility that makes this Play valuable.

Not telling the team what changed

This workflow reads emails. People notice when their communications start appearing in the CRM automatically. Tell them before it goes live, not after. Frame it as removing the burden of manual entry, not as monitoring.

No baseline before launch

Spend 30 minutes before going live pulling a field completeness report from your CRM. You need a 'before' number to demonstrate the 'after.' Without it, you're unable to quantify the impact of one of the most impactful plays in the book.

Exception rule

Read before going live

Build the exception queue and name its owner before going live. An automated CRM logging system without a human backstop will eventually write something incorrect to a contact record, and you need someone watching for it. The queue owner reviews exceptions daily for the first month, then weekly once patterns are understood.

Downloads & Templates

Workflow Diagram

Play 1 Workflow Diagram

Visual flowchart of the three workflows: email logging, calendar logging, daily digest.

Request Asset
Prompt Template

Email Logging Prompt Library

Tested system/user message prompts for CRM email summarization. Copy-paste ready for n8n.

Request Asset

Related plays

Revenue Institute

Want someone to build this play for your firm? Revenue Institute implements the full AI Workforce Playbook system as part of every engagement.

RevenueInstitute.com