skills/sales-fathom/SKILL.md
Fathom AI note-taker platform help — REST API for pulling meeting transcripts, summaries, action items, and CRM matches into CRMs, data warehouses, or Slack. Use when transcripts not syncing to HubSpot/Salesforce, Fathom webhook signatures failing HMAC verification, bot blocked by Google Meet as a security risk, OAuth app can't include transcript inline, building a Fathom→Snowflake/BigQuery pipeline, rate-limited at 60 calls/minute, or picking between Fathom free tier vs Premium vs Team vs Business. Do NOT use for selecting between Fathom and competitors like Fireflies/Gong/Avoma (use /sales-note-taker) or reviewing specific call recordings (use /sales-call-review).
npx skillsauth add sales-skills/sales sales-fathomInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
If references/learnings.md exists, read it first for accumulated Fathom knowledge.
What are you trying to do?
/sales-note-takerWhich auth path?
X-Api-Key header)Which Fathom plan?
Skip-ahead rule: if the user's prompt already has the context, skip to Step 2.
| User situation | Route to |
|---|---|
| "Fathom vs Fireflies vs Gong vs Avoma — which should we pick" | /sales-note-taker {question} |
| "Review this Fathom recording and score it" | /sales-call-review {question} |
| "Manager coaching program using Fathom recordings" | /sales-coaching {question} |
| "Build a generic Zapier/Make/n8n workflow" | /sales-integration {question} |
| Anything Fathom-platform-specific (API, webhooks, pricing, integrations, bot behavior) | Stay here |
When routing, use the exact command: /sales-{skill} {user's original question}.
Read references/platform-guide.md for the full platform reference — modules, pricing tiers, integrations, plan-gated features, special programs.
Read references/fathom-api-reference.md for verbatim API docs — endpoints, request/response schemas, OAuth flow, webhook HMAC verification, rate limits, SDK methods.
Answer using only the relevant section. Don't dump the entire reference.
Once you have the relevant reference content:
POST /webhooks with include_transcript=true and the right triggered_for array) and fall back to polling GET /meetings?created_after=...&cursor=... for backfill/reconciliation. For OAuth apps, always use the separate GET /recordings/{id}/transcript endpoint (the inline include_transcript param is disabled for OAuth).If you discover a gotcha, workaround, or tip not covered in references/learnings.md, append it there with today's date.
Best-effort from research (2026-04) — review pricing tier limits and plan-gated features before quoting customers.
include_transcript or include_summary query params on GET /meetings. Must fetch these separately via GET /recordings/{recording_id}/transcript and GET /recordings/{recording_id}/summary. Plan this into pipelines — it's 1 extra API call per meeting for OAuth builds.include_transcript, include_crm_matches, include_summary, or include_action_items to be true. An empty payload is rejected.429 with the RateLimit-Reset header.webhook-id, webhook-timestamp, webhook-signature). The secret string starts with whsec_ — strip that prefix and base64-decode the remainder before HMACing. Signed content is ${id}.${timestamp}.${raw_body}. Verify timestamp within 5 minutes to prevent replay.sdks/breaking-changes/* before upgrading./sales-note-taker — Picking a note-taker (Fathom vs Fireflies vs Avoma vs Gong vs Otter vs Fellow vs Grain vs Sembly vs Read.ai) and cross-vendor integration patterns/sales-call-review — Review a specific Fathom recording and score against MEDDPICC/SPIN/Challenger/sales-coaching — Use Fathom recordings in coaching programs, onboarding, certifications/sales-integration — Zapier/Make/n8n workflows to move Fathom data to other tools/sales-salesloft — Pair Fathom meetings with Salesloft cadence engagement/sales-zoominfo — Alternative conversation intelligence via Chorus if Fathom doesn't fit/sales-do — Not sure which skill to use? The router matches any sales objective to the right skill. Install: npx skills add sales-skills/sales --skill sales-do -a claude-code -yUser says: "I built a webhook receiver for Fathom but transcripts aren't showing up in Snowflake — webhooks hit but payload looks wrong" Skill does:
include_transcript=true (otherwise payload has no transcript body)GET /meetings?created_after={yesterday} to catch any webhook deliveries that failedRetry-After
Result: Correct webhook payload shape + reconcile-poll fallback so no transcripts get lost.User says: "Building a SaaS that lets each customer connect their Fathom — do I use API keys or OAuth?" Skill does:
fathom.video/marketplace_applications/new, exchange code for tokens, implement TokenStore with persistent storage (SQLite/Postgres/Redis), never use newTokenStore() in productioninclude_transcript/include_summary on the /meetings endpoint — must fetch per-recording, so plan for N extra calls per listing pagepublic_api is currently the only OAuth scope
Result: OAuth architecture plan with token storage, redirect URI, and N+1 call pattern for transcripts.User says: "We're 4 reps on Fathom free — what's the cheapest plan that gives us HubSpot sync?" Skill does:
Cause: Not stripping whsec_ prefix before decoding, or comparing raw bytes instead of base64-encoded strings
Solution: base64.b64decode(secret.split('_')[1]) — HMAC the signed content ${webhook-id}.${webhook-timestamp}.${raw_body} (must be raw body, NOT JSON-parsed-and-re-serialized), base64-encode the digest, compare against each signature in the webhook-signature header (strip version prefix v1, first). Verify timestamp within 5 minutes.
429 Too Many Requests during bulk backfillCause: Exceeding the global 60 calls/minute per-user rate limit
Solution: Read the RateLimit-Remaining and RateLimit-Reset headers on every response. Queue requests at 1/second (max sustainable). For OAuth apps fetching N meetings + N transcripts + N summaries, that's 3N calls — budget accordingly. Adding more API keys to the same user account doesn't help (limit is user-based, not key-based).
Cause: OAuth apps cannot use include_transcript=true on GET /meetings — the field silently returns null
Solution: After listing meetings, fetch transcript per recording with GET /recordings/{recording_id}/transcript. Same for summary — use GET /recordings/{recording_id}/summary. Both endpoints support async mode via destination_url query param, which POSTs the result to your URL instead of returning inline (useful for large backfills that would otherwise time out).
references/learnings.md with today's date.tools
UpViral platform help — viral referral marketing and list-building platform (by Emarky) for viral sweepstakes, giveaway/reward campaigns, pre-launch waiting lists, and milestone referral programs, with REST API (app.upviral.com/api/v1/), callback-URL webhooks, PHP SDK, fraud detection (IP-based suspicious-referral flagging), A/B testing, smart leaderboards, unlockable incentives, and 30+ native ESP/CRM integrations (Mailchimp, ActiveCampaign, ConvertKit, AWeber, HubSpot, Klaviyo, Intercom) plus Zapier/Make/Pipedream/Integrately/Pabbly. Use when UpViral campaigns aren't tracking referral points correctly, deciding between Starter $79/mo annual (10K leads, 1 brand, NO API) vs Business $119/mo (25K, 2 brands, API + webhooks unlocked) vs Premium $319/mo (100K, 5 brands, dedicated account manager), the API returns errors because you're on the Starter tier where API/webhooks are gated, building an UpViral→CRM or UpViral→data-warehouse pipeline with add_contact / get_leads / get_leads_points / add_points / get_custom_fields / lists methods (uvapikey + uvmethod form-encoded POST), interpreting fraud flags where same-IP referrals get marked suspicious and you must manually activate/delete/blacklist, setting up the Callback URL (webhook) to fire on reward-unlock events, Zapier New Lead / New Reward Unlocked triggers not firing, ClickFunnels/Shopify/funnel-builder integration breaking, the drag-and-drop page builder showing broken widgets or limited customization, the setup feeling long and complicated for your first campaign, or picking UpViral over Viral Loops / KickoffLabs / Vyper / Prefinery / Gleam / KingSumo / ShortStack for a viral campaign. Do NOT use for general newsletter audience growth strategy across all platforms (use /sales-audience-growth), newsletter monetization (use /sales-newsletter), KickoffLabs-specific help (use /sales-kickofflabs), no-code merge-tag newsletter referrals (use /sales-referralkit), SparkLoop paid recommendations (use /sales-sparkloop), or full-stack multi-level Level-1/2/3 referral/affiliate tracking (use /sales-referralhero).
development
ReferralHero platform help — full-stack referral, affiliate, waitlist, contest, and NPS platform with subscriber API, webhooks, Zapier, Mailchimp/Kit/AWeber/Klaviyo/ActiveCampaign/SendLane connectors, coupon codes, multi-level referral tracking (Level 1/2/3), anti-fraud, and 5,000 calls/hour rate limit. Use when ReferralHero campaigns aren't tracking referrals correctly, deciding between PRO $199/mo (10K members, includes API + webhooks) and PREMIUM $399/mo (50K members, adds ReCaptcha + SMS verification), authentication is failing with no_token or X-API-Key header is being ignored, multi-level referral counts (Level 2/3) aren't appearing for downline subscribers, coupon group endpoints return 404 or coupon arrays max out, hitting the 5,000 calls/hour soft limit and getting too_many_calls 429s, the Mailchimp/Kit native integration is double-adding subscribers, webhook payloads aren't firing on confirmation events, importing Stripe customer IDs through transaction tracking, generating reward fulfillment when subscribers cross milestone thresholds (promote/unlock_promoted_reward), comparing ReferralHero against SparkLoop/ReferralKit/Viral Loops/GrowSurf/KickoffLabs for referral marketing, or routing referral data via add_bulk_transactions (500-transaction batch limit). Do NOT use for general newsletter audience growth strategy (use /sales-audience-growth), general newsletter monetization (use /sales-newsletter), no-code newsletter-only referral with merge-tag insertion (use /sales-referralkit), SparkLoop's paid recommendations or partner network (use /sales-sparkloop), or affiliate program strategy across many platforms (use /sales-affiliate-program).
tools
KickoffLabs platform help — viral marketing platform for pre-launch waitlists, bonus-entry giveaways, milestone-reward referral programs, leaderboard giveaways, and email opt-in bribes with REST API v1 + v2, server-side webhooks (in/out), KOL.js JavaScript library, AnyForm script for custom pages, fraud detection (duplicate_ip / bounced / duplidate_email flags), SMS verification add-on, native ESP integrations (Klaviyo, Mailchimp, ActiveCampaign, Brevo), website builders (Webflow, Wix, Squarespace, Weebly), Shopify, Facebook Audiences, Slack, Zapier. Use when KickoffLabs viral campaigns aren't tracking referrals correctly, deciding between Hobby $13/mo annual (500 leads/mo no A/B no reward emails) vs Premium $48/mo (2.5K + A/B + reward emails + tracking pixels) vs Business $99/mo (10K + custom email templates + custom domains + advanced reporting + 3 team) vs Enterprise $202/mo (25K + 5 team + SMS included), API key getting rejected because you embedded it in client-side JavaScript instead of server-side, can't decide whether to use v1 /subscribe vs v2 /tags/:TAG_ID/lead for lead creation, webhook payloads firing with `__fraudulent` flag and you need to interpret the duplicate_ip/bounced/duplidate_email reason codes (yes, duplidate is spelled that way in their docs), AnyForm script not posting to KickoffLabs vs native API endpoint, leaderboard endpoint returning more than 50 leads is not allowed, social_id (kid in share URLs) attribution chain breaking between v1 and v2, contest score vs lead count metrics in the webhook payload are confusing, SMS Verification only available on Premium+ as $50/mo add-on (Enterprise includes), per-month lead cap auto-upgrades at $8 per 1000 overage leads, picking between KickoffLabs and Viral Loops / UpViral / Prefinery / ReferralCandy / Voucherify for viral campaign type fit, or rate limit per tier (10-100 calls/minute) is hitting on bulk imports. Do NOT use for general newsletter audience growth strategy (use /sales-audience-growth), general newsletter monetization (use /sales-newsletter), no-code merge-tag-only newsletter referrals (use /sales-referralkit), SparkLoop paid recommendations + partner network (use /sales-sparkloop), or full-stack referral/affiliate with multi-level Level-1/2/3 tracking (use /sales-referralhero).
development
Routes any sales, marketing, ad, or GTM objective to the right specialized skill and outputs the install command for that skill plus a ready-to-paste prompt packed with the user's context. Asks clarifying questions when the objective is ambiguous, then hands back a copy-paste-runnable next step. Covers prospecting, outbound cadences, deals, proposals, forecasting, deliverability, enrichment, intent, content, coaching, CRO, SEO, launch directories, newsletters, email/SMS/push marketing, chatbots, influencer marketing, social media, employee advocacy, media relations, reviews, data hygiene, B2B advertising, retargeting, affiliate, loyalty, digital products, memberships, webinars, checkout, and platform-specific help. Use when the user has a sales or marketing question and isn't sure which skill to use, or wants a multi-skill sequence with a batch install command. Do NOT use to solve problems directly — this skill only routes.