Automation Recipes

Updated: March 30, 2026

Perspective automations let you push interview data into the tools your team already uses. Below are the most common patterns, with enough detail to get each one running.

Built-In Channels

Before reaching for external tools, check whether a built-in channel covers your use case. Perspective supports these automation channels natively:
ChannelUse Case
WebhookSend raw event payloads to any HTTPS endpoint.
EmailDeliver summaries or digests to a list of recipients.
SlackPost messages directly to a Slack channel.
HubSpotPush data into HubSpot forms or contacts.
Participant EmailSend templated follow-up emails to interview participants.
Built-in channels are configured in Settings > Automations on each perspective. They handle authentication, retries, and error tracking for you.

Recipe 1: Sync Leads to Your CRM

Goal: When a concierge conversation completes, create or update a contact in your CRM with the participant's details and conversation summary.
Using the built-in HubSpot channel:
  1. Open your perspective and go to Automations.
  2. Add a new automation with trigger Per Interview.
  3. Select HubSpot as the channel and connect your account.
  4. Map the conversation fields to HubSpot contact properties.
Using a webhook with any CRM:
  1. Set up a webhook automation pointing to your server or a Zapier/Make webhook URL.
  2. In your handler, extract data.participant.email and data.summary_url from the payload.
  3. Use your CRM's API to create or update the contact.
// Example: Zapier webhook handler pseudocode
const { participant, summary_url, outline_id } = event.data;
await crm.upsertContact({
  email: participant.email,
  source: "perspective",
  interview_link: summary_url,
  campaign: event.data.params?.campaign || "unknown",
});

Recipe 2: Slack Notifications on Every Interview

Goal: Post a summary to a Slack channel each time an interview completes.
Using the built-in Slack channel:
  1. Add an automation with trigger Per Interview.
  2. Select Slack as the channel and authorize access to your workspace.
  3. Pick the target channel (e.g., #research-updates).
  4. Optionally add an instruction to customize the message format -- the automation agent will use it to shape the Slack post.
Using a webhook:
  1. Create a Slack Incoming Webhook URL.
  2. Point a Perspective webhook automation to that URL.
  3. Perspective delivers the event payload; Slack renders it as a message.
For trust.alert events, consider routing to a separate channel like #escalations so your team can review flagged conversations quickly.

Recipe 3: Scheduled Digests

Goal: Send a daily or weekly summary of all interviews to your team via email or Slack.
  1. Add an automation with trigger Scheduled (daily or weekly).
  2. Select your channel: Email for an inbox digest, or Slack for a channel post.
  3. The automation agent aggregates recent interviews and sends a single summary covering the period since the last digest.
Scheduled automations track their own cadence -- nextRunAt advances automatically after each run. You can set the timezone in the automation settings so digests arrive at a reasonable hour.

Recipe 4: Conditional Follow-Up Emails

Goal: Send different follow-up emails to participants based on how the interview went.
  1. Add an automation with channel Participant Email.
  2. Create up to 5 email templates, each with a name, subject, body, and an intent description explaining when to use it.
  3. Set a default template as the fallback.
  4. The automation agent reads the conversation and selects the most appropriate template based on the intent descriptions.
Example templates:
  • Positive feedback: Thanks the participant and offers a referral link.
  • Feature request: Acknowledges the request and links to the public roadmap.
  • Escalation needed: Loops in a human with context from the conversation.

Recipe 5: Data Export to a Warehouse

Goal: Write interview transcripts and metadata to Snowflake, BigQuery, or another data warehouse on a nightly schedule.
  1. Set up a webhook automation with trigger Per Interview.
  2. Point it to a lightweight ingestion service (e.g., an AWS Lambda or Cloud Function).
  3. In the handler, transform the payload and write to your warehouse.
# Example: Lambda handler writing to Snowflake
def handler(event, context):
    payload = json.loads(event["body"])
    row = {
        "conversation_id": payload["data"]["conversation_id"],
        "outline_id": payload["data"]["outline_id"],
        "participant_email": payload["data"]["participant"]["email"],
        "completed_at": payload["created"],
        "summary_url": payload["data"]["summary_url"],
    }
    snowflake_cursor.execute(INSERT_SQL, row)
For batch workflows, use a scheduled automation to trigger a nightly export instead of processing each interview individually.

Recipe 6: Zapier and Make (Integromat)

Both Zapier and Make can receive Perspective webhooks as triggers.
Zapier:
  1. Create a new Zap with trigger Webhooks by Zapier > Catch Hook.
  2. Copy the webhook URL into a Perspective webhook automation.
  3. Test the trigger by completing an interview.
  4. Add actions: create CRM contacts, send emails, update spreadsheets, or anything else Zapier supports.
Make:
  1. Create a new scenario with a Webhooks > Custom webhook module.
  2. Copy the URL into Perspective.
  3. Map the JSON fields to downstream modules.
Both tools handle retries and error notifications on their end, so you get two layers of reliability (Perspective retries + Zapier/Make retries).

Tips

  • Use conditions to reduce noise: Filter automations by tags or trust score so you only process the conversations that matter.
  • Use execution mode wisely: "Direct" mode sends the raw payload as-is. "Agent" mode runs an AI agent that reads the conversation and crafts a message -- better for Slack and email where you want a human-readable summary.
  • Monitor failures: Perspective tracks consecutive failures per automation. If an automation fails repeatedly, check the error in Automations settings and verify your endpoint is reachable.