Slack + Upfirst integration

Automatically send call summaries, urgent alerts, and follow-up reminders from Upfirst's AI answering service directly into Slack via Zapier

table of contents

Upfirst is an AI receptionist that connects to Slack in two ways: through Custom Actions (direct posts to a Slack webhook or chat.postMessage) and through Zapier. Every inbound call can land in the right Slack channel as a structured message with caller, intent, summary, and a link to the transcript.

Does Upfirst integrate with Slack?

Yes. Two options:

  • Custom Actions POST directly to a Slack incoming webhook URL or to chat.postMessage with a bot token. The message goes up the moment the action fires, with full control over channel, formatting, threading, and Block Kit layout.
  • Zapier does the same thing through its Slack Zaps. Useful when you want a Slack notification combined with other actions (a row added to a sheet, a row created in a CRM) in the same automation.

Slack is the easiest of the integrations to set up. An incoming webhook is a five-minute config. No OAuth dance unless you want one.

What Slack is

Slack is the team messaging platform where most distributed sales, ops, and service teams run their internal communication. Channels organize conversations by topic, threads keep them tidy, and bots bring outside data into the room where decisions get made.

For Upfirst's typical customer (the operator who's busy on jobs and needs the office to stay coordinated), Slack is where call notifications need to land. Email gets buried. Slack pings the right person in the right channel and stays scannable.

What Upfirst can do with Slack

Post every completed call to a #calls channel

After every call, an after-call Custom Action posts a structured message to the channel of your choice. Block Kit lets the message include caller name, phone, intent (sales, support, booking, spam), the captured custom fields, a short summary, and a button-style link to the full transcript and recording.

Alert the right channel for urgent or qualified calls

Upfirst can pull anything out of a call: urgency, vertical, location, deal size. Use those signals to branch the Slack post. Emergency calls go to #ops-urgent and tag on-call. Qualified sales calls go to #sales-leads and tag the AE on rotation. General inquiries post to #calls and stay quiet.

Notify a specific person about a VIP caller

For known callers (looked up via Custom Action at call start, against your CRM), the after-call Slack post can use users.lookupByEmail to find the owner's Slack ID and send a direct mention or DM. The right rep gets pinged the moment their lead calls in, without anyone forwarding.

Send the call summary and transcript as a Slack thread

For longer calls, the initial Slack message posts the headline (caller, intent, next step). A follow-up Custom Action threads the full transcript underneath. The channel stays scannable. The detail is one click away when someone needs it.

Slack API options Upfirst can use

  • Incoming Webhooks. POST to a webhook URL with a JSON body. The simplest to set up. Each webhook posts to one fixed channel.
  • chat.postMessage. POST with a bot token. Set the channel per request, use Block Kit, thread messages, target users by ID.
  • users.lookupByEmail. Turn an email into a Slack user ID for direct mentions.
  • files.upload. Attach a transcript file directly to a channel (useful for very long calls where Block Kit limits aren't enough).
  • conversations.list. Discover channels programmatically if your routing depends on it.

Setting up the Slack integration

Custom Actions with an incoming webhook (simplest)

  1. In Slack, install the Incoming Webhooks app from the Slack App Directory. Pick the default channel. Slack gives you a webhook URL.
  2. In Upfirst, go to Agent > Custom actions and add a new action.
  3. Pick the trigger: After call for the standard call-completed notification. During call works if you want a live alert ("VIP on the line").
  4. Set the request. POST to your webhook URL. Body is JSON with a text field, or a blocks array for richer Block Kit messages. Reference #{{caller_id}}, #{{call_summary}}, #{{transcript}}, and any custom fields.
  5. Save the action. Test it with a real call.

Custom Actions with a bot token (more flexible)

  1. In Slack, create a Slack app. Add the chat:write and users:read.email scopes. Install it to your workspace. Copy the Bot User OAuth Token.
  2. In Upfirst, add a Custom Action with bearer authentication. POST to https://slack.com/api/chat.postMessage with Authorization: Bearer YOUR_BOT_TOKEN and a JSON body containing channel and blocks.
  3. For dynamic routing, set channel based on an Upfirst variable (urgency, vertical, deal size).
  4. Test and save.

Zapier

  1. Create a Zap. Trigger: Upfirst > Call Completed.
  2. Pick a Slack action: Send Channel Message or Send Direct Message.
  3. Pick the channel. Compose the message with call fields (caller name, summary, transcript link).
  4. Add filters for the call types worth a Slack notification.
  5. Test and turn the Zap on.

Most teams start with a single after-call Custom Action posting to a #calls channel via webhook. Branching by intent and tagging owners by Slack ID come next, once it's clear which calls deserve their own routing.

Try our AI answering service free for 14 weeks

No credit card required. Just sign up, forward your calls, and experience the magic of never missing another call again.

Try for free