> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hyzl.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Follow-ups (SMS & Email)

> Automatically send SMS or email follow-ups after a call.

Follow-ups let the AI take action immediately after a call completes. It sends a text or email while the conversation is still fresh for the contact.

<Note>
  This page covers the **automatic** follow-ups your AI sends right after a call. You may want to work hot leads and booked meetings yourself. You can send pre-written texts, emails, and calls from your own phone. That is the [Follow-ups feed](/docs/mobile-app/follow-ups) in the hyzl mobile app.
</Note>

## SMS follow-ups

When you turn it on, the AI offers to send an SMS during the call. If the contact consents, the AI sends the message after the call ends.

### Consent required before any text

Every SMS follow-up is **consent-gated**. The AI must hear the contact agree to receive a text on the call before any message is sent. The Telephone Consumer Protection Act (TCPA) requires this. hyzl cannot send an SMS to a contact who did not consent.

If the contact answers and declines (or the call goes to voicemail / fails), no SMS is sent.

### SMS templates

SMS messages are sent from one of five pre-built templates. You **must choose a template**. There is no free-text SMS option. Each template's wording is fixed for compliance reasons; you control its behavior by filling in the template's variable slots.

| Template                     | Best For                                       | What You Provide                   |
| ---------------------------- | ---------------------------------------------- | ---------------------------------- |
| **Meeting Request**          | Invite the contact to book a meeting           | Meeting link                       |
| **Next Step**                | Share a follow-up action after a positive call | Meeting link                       |
| **Appointment Confirmation** | Confirm a scheduled appointment                | (auto-filled from call transcript) |
| **Conversation Summary**     | Recap the call highlights                      | (auto-filled from call transcript) |
| **Offer / Promo**            | Share a special offer or promotion             | Offer summary + promo code         |

When the SMS sends, the backend swaps your provided content into the template. You do not write the surrounding sentence.

### Configuration

| Field             | Description                                                                                                                                                                   |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Template**      | Choose one of the five templates above                                                                                                                                        |
| **Sender Name**   | Override your default sender name for this campaign. This is useful when you want a campaign to come from a different person on your team without changing the global setting |
| **Meeting Link**  | (Meeting Request / Next Step templates) The scheduling link to embed (e.g. Calendly URL). Per-campaign override. Falls back to your account default if blank                  |
| **Offer Summary** | (Offer / Promo template only) The offer being shared                                                                                                                          |
| **Promo Code**    | (Offer / Promo template only) The promotional code to include                                                                                                                 |

The Sender Name and Meeting Link are **per-campaign overrides**. They only apply to this campaign and do not change your account-wide defaults.

### Number confirmation

Before ending every call, the AI asks the contact which number to send the SMS to. It reads the number back grouped naturally, then waits for explicit confirmation. If the contact wants to use the called number, the AI confirms that and continues.

If the AI cannot determine or confirm a number, it flags the SMS destination for manual review. The flag appears in the call results, and hyzl sends no message automatically. You can set the destination and send the SMS manually from the call detail panel after the call ends.

### Missed call SMS

This only applies to **Revenue Recovery Stripe campaigns**, not outbound cold-calling campaigns.

On a Stripe recovery campaign, a customer's subscription is sometimes still active when they miss the call. This happens, for example, when their cancellation takes effect at the end of the billing period. A normal Checkout link is not safe to send in that case. It would create a second, concurrent subscription and double-bill the customer.

Instead, the customer gets a **one-tap link** that applies the discount straight to their existing subscription. They tap the link, land on a co-branded confirm page showing the offer, and tap **Keep my plan**. hyzl applies the discount to their current subscription and reverses the scheduled cancellation automatically. hyzl creates no new subscription, and there is no charge that day. The discount lands on their next renewal. The text only sends when there is a real discount to name. A campaign with no active offer, or a 0% discount, sends nothing.

Carrier opt-outs are honored: a contact who has replied **STOP** is never texted.

This message differs from two others:

* The [answered-call SMS](#sms-follow-ups) above. That one requires the contact's live consent during the call.
* The text from a RevenueCat recovery campaign. That one sends its own coded offer text with an App Store redemption link.

## Email follow-ups

When you turn it on, the AI sends an email to the contact after the call.

### Requirements

Email follow-ups require a connected email account. Turn email follow-ups on in the campaign settings. hyzl then prompts you to connect your Gmail or Outlook account from that step.

### Configuration

| Field            | Description                                          |
| ---------------- | ---------------------------------------------------- |
| **From Name**    | The sender name displayed in the contact's inbox     |
| **Subject**      | Email subject line, set per campaign                 |
| **Body**         | Email body. Supports plain text and basic formatting |
| **Meeting Link** | Optionally embed a scheduling link in the email body |

You configure both subject and body per campaign, so you can run multiple campaigns simultaneously with different copy.

### Consent-gated sending

Standard email follow-ups are **consent-gated**. hyzl sends them only to contacts who answered and explicitly agreed during the call to receive an email. You must also turn on "Ask for email" for the campaign.

### Missed call emails

You can configure a **separate** email template that fires for contacts who **did not answer**. This is useful for re-engagement.

| Field                   | Description                                |
| ----------------------- | ------------------------------------------ |
| **Missed Call Subject** | Subject line for the unanswered-call email |
| **Missed Call Body**    | Body for the unanswered-call email         |

Missed call emails fire **without consent gating**, because there was no live conversation to capture consent from. They go to every contact whose call status is **Missed**, provided the contact has an email on file. Use this email to acknowledge the attempt and invite the contact to respond at a better time.

## Retry missed calls

When a contact does not answer, you can have the AI **automatically call back**. It does not give up after one attempt. Turn **Missed Call Retry** on in the campaign settings.

The **first call is always immediate**. Retries are the follow-up attempts that get spaced out afterward.

### Configuration

| Field                       | Description                                                               | Default |
| --------------------------- | ------------------------------------------------------------------------- | ------- |
| **Max retries per contact** | How many additional attempts to make after the first missed call (1 to 5) | 1       |
| **Min gap between retries** | Minimum minutes between attempts (1 to 720)                               | 120     |

Two more constraints apply automatically:

* Retries only dial within a **9:00 AM to 1:00 PM window in the contact's local time**.
* At most **2 retry calls land per day**.

On Revenue Recovery campaigns those two are editable fields (**Call window** and **Max retries per day**, 1 to 6). On cold-calling campaigns they are fixed defaults.

<Note>
  **Mornings (around 10 to 11 AM local) get the best pickup rates.** Retries land inside your call window. If a retry comes due after today's window has already passed, it rolls to the **next morning's** window. It never dials at a bad hour.

  hyzl anchors the window to each contact's **own** local time. So a campaign spanning multiple time zones still reaches everyone in their morning.
</Note>

The settings panel has a schedule preview. It shows exactly when the next few retries would land for a contact who misses right now.

**Each retry consumes one credit**, the same as any other call. hyzl holds the missed-call follow-up **emails** (above) until **all** retry attempts are exhausted. So a contact who answers on a retry never also gets the "we missed you" email.

This retry configuration is for outbound cold-calling campaigns. Revenue Recovery Stripe campaigns follow their own recovery schedule. Their [Missed Call SMS](#missed-call-sms) can send on the first no-answer.

## When follow-ups are sent

* hyzl sends SMS and email follow-ups within seconds of the call ending
* hyzl sends one follow-up per contact only, regardless of the number of call attempts
* If a contact is on your Do Not Call list, hyzl suppresses follow-ups automatically
