Meeting prep - product usage insights

This automated workflow triggers 30 minutes before customer meetings, pulls the attendee's product usage data from Amplitude via Retool, analyzes it with AI, and delivers insights to the rep via Slack or CRM. Reps walk into calls knowing engagement levels, feature adoption gaps, and get three specific talking points.
Complexity (to Build):
High
Complexity (to Run):
Low
Human Input:
Low
Copy-paste each agent
Use This Template
Meeting prep - product usage insights

Workflow Summary:

Trigger: 30 minutes before a calendar event starts

Then it:

  1. Filters for external attendees - Identifies guests outside your email domain
  2. Creates a prep document - Generates a Google Doc for the meeting
  3. Looks up the meeting in your CRM - Finds the HubSpot record for context
  4. For each guest:
    • Step 6: Calls your Retool API to fetch their Amplitude product usage data (currently this will fail since you don't have real Amplitude data)
    • Step 7: Sends that usage data to AI to analyze and generate insights
  5. Updates the HubSpot meeting record - Adds the insights to your CRM
  6. Sends you a Slack message - Delivers the analysis so you're prepped for the call

How to customize this to your org/workflow/tools/processes

Notion-Style Callout
💡 Need something more complex and customized to your flow & tools? Let's talk (15 min).

Retool Workflow

  • Replace Amplitude with your analytics tool (Mixpanel, PostHog, Heap, etc.) - update API endpoints and authentication
  • Adjust the data filtering logic (currently 30 days) to match your needs
  • Modify the engagement thresholds (50+ events = high, 20+ = medium) based on your product usage patterns
  • Test the workflow returns the data granularity you need for sales conversations
  • Update company name extraction logic if you track organizations differently in your analytics tool

Relay Workflow - Calendar & Filtering

  • Change the calendar connection to your work calendar
  • Adjust trigger timing (currently 30 min before meetings)
  • Update email domain filter from contentkicks.co to your company domain
  • Add additional filters for meeting types if needed (external only, tagged meetings, etc.)

Relay Workflow - CRM Integration

  • Replace HubSpot steps with your CRM (Salesforce, Pipedrive, etc.) or remove entirely
  • Adjust how meeting records are created/updated based on your CRM structure
  • Map custom fields if you want to store insights in specific CRM properties

Relay Workflow - AI Analysis

  • Customize the AI prompt based on what insights matter for your sales process
  • Choose your preferred AI provider (GPT-4, Claude, etc.)
  • Adjust the analysis depth based on meeting importance (enterprise vs SMB)

Relay Workflow - Notification & Delivery

  • Change Slack notification to email if you don't use Slack
  • Update the notification recipient/channel
  • Customize message format and what data points to highlight
  • Consider alternative delivery: append to support tool (Intercom, Zendesk), create task in project management tool, etc.

Testing Strategy

  • Start with mock data in Step 6 (add a "Custom code" step with a JS script that produces mock data mimicing what you have in your analytics tool) to test AI analysis and notifications
  • Test with a few real calendar events before going live
  • Verify the workflow only triggers for intended meeting types
  • Confirm data appears where you expect (CRM, Slack, etc.)

Steps and instructions

How to recreate the Retool workflow

Note: Ask Claude for help setting this up if you're not technical.

Step 1: Create a New Workflow

  • Go to Retool → Workflows → Create New → Blank Workflow
  • Name it "Amplitude Sales Prep API" (or similar)

Step 2: Configure the Webhook Trigger

  • The workflow starts with a webhook trigger by default
  • Click on it to view the webhook URL - save this for later
  • The webhook will receive JSON with userEmail (and optionally companyName)

Step 3: Add Amplitude Resource

  • Go to Resources → Create REST API resource
  • Base URL: https://amplitude.com/api/2
  • Authentication: Bearer Token
  • Token: Your Amplitude API token (from Amplitude → Settings → Projects → API Tokens)
  • Save the resource

Step 4: Add User Lookup Query

  • Click "+" to add a block → Resource Query
  • Select your Amplitude resource
  • Name it: User_lookup
  • Method: GET
  • Path: /usersearch
  • URL Parameters: Add parameter user = {{ startTrigger.data.userEmail }}

Step 5: Add User Activity Query

  • Add another Resource Query block
  • Select Amplitude resource
  • Name it: getUserActivity
  • Method: GET
  • Path: /useractivity
  • URL Parameters: Add parameter user = {{ User_lookup.data.matches[0].user_id }}

Step 6: Add JavaScript Processing Block

  • Add a Code Block → JavaScript
  • Name it: code1
  • Paste this code:
javascript
const activity = getUserActivity.data;
const userEmail = startTrigger.data.userEmail;
const thirtyDaysAgo = Date.now() - (30 * 24 * 60 * 60 * 1000);
const recentEvents = (activity.events || []).filter(e => e.event_time > thirtyDaysAgo);
const uniqueEventTypes = [...new Set(recentEvents.map(e => e.event_type))];
const eventsByType = {};
recentEvents.forEach(e => {
 eventsByType[e.event_type] = (eventsByType[e.event_type] || 0) + 1;
});
const topFeatures = Object.entries(eventsByType)
 .sort(([,a], [,b]) => b - a)
 .slice(0, 10)
 .map(([name, count]) => ({ feature: name, count: count }));
const lastActive = activity.userData?.last_used || 0;
const daysSinceActive = Math.floor((Date.now() - lastActive) / (1000 * 60 * 60 * 24));
return {
 user: {
   email: userEmail,
   totalEvents: recentEvents.length,
   uniqueFeatures: uniqueEventTypes.length,
   featureList: uniqueEventTypes,
   topFeatures: topFeatures,
   lastActiveDate: new Date(lastActive).toISOString(),
   daysSinceActive: daysSinceActive,
   isActive: daysSinceActive <= 7,
   engagementLevel: recentEvents.length > 50 ? 'high' : recentEvents.length > 20 ? 'medium' : 'low'
 },
 company: {
   name: startTrigger.data.companyName || "Unknown"
 },
 generatedAt: new Date().toISOString()
};

Step 7: Add Return Response Block

  • Add a "Return Response" block
  • Status code: 200
  • Response body: {{ code1.value }}

Step 8: Test the Workflow

  • In the webhook trigger, add test JSON:
json
{
 "userEmail": "actual-user@example.com"
}
  • Replace with a real email from your Amplitude data
  • Click "Run Test"
  • Verify each block executes successfully and returns expected data

Step 9: Deploy

  • Click "Deploy" in the top right
  • Copy the webhook URL from the trigger settings
  • This URL is what you'll call from Relay or any other automation tool

The Relay workflow

Prompt (make this better by adding an example of the ideal output you want at the end of this prompt):

I have an upcoming sales call with <div>Email</div>. Help me prep for this call by analyzing his/her product usage data from our Amplitude environment:
User Data: Attached in the HTTP Response
My goals:
1. Find ways to help him/her be more successful in the app (increase usage).
2. Find revenue opportunities (convert to a paid user, talk about a more expensive plan, mention upsells or add-ons, etc.)
Provide:
1. Quick engagement summary
2. Red flags or risks
3. Expansion opportunities 
4. 3 specific talking points for the call
5. Anything else you find insightful
Keep it concise and actionable for a sales rep.