Home AI agent AI Agent Custom Action Templates

AI Agent Custom Action Templates

Last updated on Jun 17, 2026

Custom Actions let the AI agent call external webhooks to perform real operations — like applying a discount, logging a bug, or notifying your team — directly from a conversation. Below are 15 templates with step-by-step setup instructions for each.

To set up any of these, go to AI Agent → Actions → + Custom Action.


1. Apply a discount code to a future order

When a customer has had a bad experience and deserves a goodwill gesture, the AI generates or applies a discount code in Shopify and shares it in the conversation.

Setup:

  1. Name: Apply a discount code

  2. Description: Use when a customer has had a negative experience and a goodwill discount is appropriate as compensation. Do not use proactively — only when the situation clearly warrants it.

  3. Webhook URL: A Make/Zapier webhook connected to the Shopify discount API

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • discount_percentage (string, required) — The discount percentage to apply (e.g. "10" for 10%)

    • reason (string, optional) — Internal reason for issuing the discount

  6. Request template:

{
  "customer_email": "{{customer_email}}",
  "discount_percentage": "{{discount_percentage}}",
  "reason": "{{reason}}"
}

2. Flag a fraudulent order

When a customer reports they didn't place an order or their account was used without their permission, the AI flags the order in Shopify or your fraud management tool for immediate review.

Setup:

  1. Name: Flag a fraudulent order

  2. Description: Use when a customer reports an order they did not place, suspects their account has been compromised, or reports unauthorized use of their payment details.

  3. Webhook URL: A Make/Zapier webhook connected to Shopify or your fraud management tool

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • order_number (string, required) — The order number being flagged as fraudulent

    • details (string, optional) — Any additional details the customer provided about the fraud

  6. Request template:

{
  "customer_email": "{{customer_email}}",
  "order_number": "{{order_number}}",
  "details": "{{details}}"
}

3. Initiate a refund

When a customer requests a refund, the AI triggers your payment provider or OMS to process it automatically.

Setup:

  1. Name: Initiate a refund

  2. Description: Use when a customer explicitly requests a refund and provides an order number. Do not use for general complaints — only when the customer clearly asks for money back.

  3. Webhook URL: A Make/Zapier webhook connected to Stripe, PayPal, or your OMS refund endpoint

  4. HTTP method: POST

  5. Parameters:

    • order_number (string, required) — The order to refund

    • reason (string, required) — Reason for the refund

    • amount (string, optional) — Amount to refund if partial

  6. Request template:

{
  "order_number": "{{order_number}}",
  "reason": "{{reason}}",
  "amount": "{{amount}}"
}

4. Extend a subscription

When a customer complains about downtime, a billing error, or a service issue, the AI can add compensatory days to their subscription.

Setup:

  1. Name: Extend a subscription

  2. Description: Use when a customer has experienced a service disruption or billing issue and compensation in the form of extra days is appropriate.

  3. Webhook URL: A Make/Zapier webhook connected to your subscription platform (e.g. Recharge, Stripe Billing, Chargebee)

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • days (number, required) — Number of days to add

    • reason (string, optional) — Internal reason for the extension

  6. Request template:

{
  "customer_email": "{{customer_email}}",
  "days": "{{days}}",
  "reason": "{{reason}}"
}

5. Update shipping address

When a customer wants to change their delivery address before the order ships, the AI sends the updated address to your OMS.

Setup:

  1. Name: Update shipping address

  2. Description: Use when a customer asks to change their shipping address and the order has not yet been dispatched. Always confirm the new address with the customer before triggering.

  3. Webhook URL: A Make/Zapier webhook connected to Shopify or your OMS address update endpoint

  4. HTTP method: POST

  5. Parameters:

    • order_number (string, required) — The order to update

    • new_address (string, required) — The full new shipping address

  6. Request template:

{
  "order_number": "{{order_number}}",
  "new_address": "{{new_address}}"
}

6. Tag customer in Klaviyo

When a customer opens a new support ticket, tag them in Klaviyo to trigger a follow-up email flow (e.g. a post-support check-in sequence).

Setup:

  1. Name: Tag customer in Klaviyo

  2. Description: Use when a new conversation is created with a customer to add a "contacted support" tag in Klaviyo.

  3. Webhook URL: A Make/Zapier webhook connected to the Klaviyo API

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • tag (string, required) — The tag to apply (e.g. "contacted-support")

  6. Request template:

{
  "customer_email": "{{customer_email}}",
  "tag": "{{tag}}"
}

7. Update customer tags in Shopify

After a conversation outcome (refund given, churn, complaint resolved), update the customer's tags in Shopify to keep your store data accurate.

Setup:

  1. Name: Update customer tags in Shopify

  2. Description: Use after a conversation is resolved to apply relevant tags to the customer in Shopify based on the outcome (e.g. "refunded", "churned", "vip-escalation").

  3. Webhook URL: A Make/Zapier webhook connected to the Shopify customer update API

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • tag (string, required) — The tag to apply in Shopify

  6. Request template:

{
  "customer_email": "{{customer_email}}",
  "tag": "{{tag}}"
}

8. Create or update a contact in HubSpot

When a new customer reaches out, automatically create or update their contact record in HubSpot so your CRM stays in sync.

Setup:

  1. Name: Create or update contact in HubSpot

  2. Description: Use when a new customer contacts support for the first time to create or update their record in HubSpot.

  3. Webhook URL: A Make/Zapier webhook connected to the HubSpot contacts API

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • first_name (string, optional) — Customer's first name

    • last_name (string, optional) — Customer's last name

    • note (string, optional) — A note to add to the contact record

  6. Request template:

{
  "customer_email": "{{customer_email}}",
  "first_name": "{{first_name}}",
  "last_name": "{{last_name}}",
  "note": "{{note}}"
}

9. Log shipping issues to Google Sheets

Every time a customer reports a shipping problem, log it automatically to a Google Sheet for tracking and reporting.

Setup:

  1. Name: Log shipping issues to Google Sheets

  2. Description: Use when a customer reports a shipping issue such as a lost parcel, wrong item, or delayed delivery.

  3. Webhook URL: A Google Apps Script web app URL or Make/Zapier webhook connected to Google Sheets

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • order_number (string, required) — The affected order number

    • issue (string, required) — A short description of the shipping issue

  6. Request template:

{
  "customer_email": "{{customer_email}}",
  "order_number": "{{order_number}}",
  "issue": "{{issue}}"
}

10. Log feature requests to Notion

When a customer suggests a new feature or improvement, log it directly to a Notion database so your product team can review it.

Setup:

  1. Name: Log feature request to Notion

  2. Description: Use when a customer explicitly suggests a new feature or product improvement. Do not use for bug reports or general complaints.

  3. Webhook URL: A Make/Zapier webhook connected to the Notion API

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • feature_request (string, required) — A summary of the feature the customer is requesting

  6. Request template:

{
  "customer_email": "{{customer_email}}",
  "feature_request": "{{feature_request}}"
}

11. Create a bug report in Jira

When a customer reports a broken feature, automatically create a Jira ticket with the conversation details pre-filled so your engineering team can act on it.

Setup:

  1. Name: Create bug report in Jira

  2. Description: Use when a customer reports a software defect — something broken that is likely to affect other users too. Do not use for account-specific issues or setup questions.

  3. Webhook URL: A Make/Zapier webhook connected to the Jira issue creation API

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • bug_description (string, required) — A clear description of the bug as reported by the customer

    • severity (string, optional) — Severity level: low, medium, or high

  6. Request template:

{
  "customer_email": "{{customer_email}}",
  "bug_description": "{{bug_description}}",
  "severity": "{{severity}}"
}

12. Log churn risk to a spreadsheet

When a customer mentions cancelling or switching to a competitor, log them as a churn risk so your retention or sales team can follow up.

Setup:

  1. Name: Log churn risk

  2. Description: Use when a customer mentions cancelling their subscription, switching to another product, or expresses strong dissatisfaction that suggests they may leave.

  3. Webhook URL: A Make/Zapier webhook connected to Google Sheets or your CRM

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • reason (string, required) — Why the customer is considering leaving

  6. Request template:

{
  "customer_email": "{{customer_email}}",
  "reason": "{{reason}}"
}

13. Send a Slack alert for VIP customers

When a VIP customer opens a ticket, immediately post a message to a dedicated Slack channel so your senior team can jump in fast.

Setup:

  1. Name: Slack alert for VIP customer

  2. Description: Use when a customer tagged as VIP or enterprise opens a new conversation.

  3. Webhook URL: Your Slack incoming webhook URL (create one at api.slack.com/apps)

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • customer_name (string, optional) — The customer's name

    • issue_summary (string, required) — A brief summary of the issue

  6. Request template:

{
  "text": "🚨 VIP customer alert: {{customer_name}} ({{customer_email}}) — {{issue_summary}}"
}

14. Notify fulfillment team about wrong items

When a customer reports receiving the wrong item, send an automated alert to your warehouse or fulfillment team so they can act immediately.

Setup:

  1. Name: Notify fulfillment — wrong item received

  2. Description: Use when a customer reports they received the wrong item in their order.

  3. Webhook URL: A Make/Zapier webhook that sends an email or Slack message to your fulfillment team

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • order_number (string, required) — The affected order number

    • item_received (string, optional) — What the customer received

    • item_ordered (string, optional) — What the customer actually ordered

  6. Request template:

{
  "customer_email": "{{customer_email}}",
  "order_number": "{{order_number}}",
  "item_received": "{{item_received}}",
  "item_ordered": "{{item_ordered}}"
}

15. Create a follow-up task in Asana

For complex issues that can't be fully resolved in the conversation, create an Asana task assigned to the right team member so nothing falls through the cracks.

Setup:

  1. Name: Create follow-up task in Asana

  2. Description: Use when a customer's issue requires follow-up action beyond the conversation, such as an investigation, a callback, or a manual process that needs to be completed later.

  3. Webhook URL: A Make/Zapier webhook connected to the Asana task creation API

  4. HTTP method: POST

  5. Parameters:

    • customer_email (string, required) — The customer's email address

    • task_description (string, required) — What needs to be done as a follow-up

    • assignee (string, optional) — The team member to assign the task to

    • due_date (string, optional) — When the task should be completed

  6. Request template:

{
  "customer_email": "{{customer_email}}",
  "task_description": "{{task_description}}",
  "assignee": "{{assignee}}",
  "due_date": "{{due_date}}"
}