> For the complete documentation index, see [llms.txt](https://docs.dapta.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dapta.ai/ai-text-agents/setting-up-your-text-agent/follow-ups.md).

# Follow-ups

Automatically re-engage users who go silent mid-conversation by sending scheduled follow-up messages after periods of inactivity.

Follow-ups let your text agent proactively reach out when a user stops responding. Instead of letting conversations go cold, the agent sends a reminder message after a configured period of silence — keeping leads warm and conversations active without any manual intervention.

You can configure up to **3 follow-ups per agent**, each with its own delay and content type.

***

## Where to find it

Follow-ups are configured in the **Settings** tab of your text agent, in the **Follow-ups** section, just below **Conversation behavior**.

***

## Supported channels

Follow-ups are sent on **WhatsApp** lines connected through Twilio or directly through Meta. They are not sent on Dapta's shared test line.

> **⚠️ Note:** WhatsApp enforces a **24-hour messaging window** — a follow-up is never sent 24 hours or more after the user's last message, or after the conversation has closed.

***

## Adding a follow-up

Click **Add follow-up**. A window opens with the follow-up's settings; fill them in and click **Save**. The follow-up appears in the **Follow-ups** section: use the **pencil** icon to edit it or the **trash** icon to delete it.

When you reach three, the section shows **Maximum 3 follow-ups reached**.

***

## Configuring a follow-up

### Delay

Set how long the agent waits after the conversation goes quiet before sending the follow-up.

* Enter a number and choose the unit: **min** (minutes) or **hrs** (hours).
* Minimum: **5 minutes**.
* Maximum: **1440 minutes (24 hours)**, or the agent's **Close after no reply for** time in **Conversation behavior** if that is shorter. When the closing time is what limits the delay, the window says *Up to {max} min, because the conversation closes after that.*
* Each follow-up needs a different delay. Delays are measured from the agent's last reply, not from the previous follow-up.

> **💡 Example:** If you set Follow-up 1 to 30 min and Follow-up 2 to 2 hrs, both timers start when the agent last replied — not one after the other.

***

### Content Type

Choose how the message content is generated:

| Content Type       | Description                                                |
| ------------------ | ---------------------------------------------------------- |
| **Static Message** | A fixed text you write in advance                          |
| **AI Generated**   | A message the agent's AI writes using a prompt you provide |
| **Webhook URL**    | Your own endpoint generates and returns the message        |

***

#### Static Message

Write the exact text the agent will send in the **Static Message** field. Keep it friendly and conversational — a short, natural check-in works best.

**Examples:**

> *"Hey! Just checking in — did you have any questions I can help with?"*

> *"Hi there! Still thinking things over? I'm here if you need anything."*

***

#### AI Generated

The agent writes a fresh follow-up each time, using the conversation and the guidance you enter in the **AI Prompt** field. If the AI decides a follow-up wouldn't help, it doesn't send one.

**Examples:**

> *"Send a warm, friendly reminder referencing what the user was asking about. End with an open question."*

> *"Write a brief follow-up in a helpful tone. Keep it under 2 sentences."*

An AI Generated follow-up can also include a file. See [Sending a file with a follow-up](#sending-a-file-with-a-follow-up).

***

#### Webhook URL

Your own service generates the message and returns it to the agent.

Enter your endpoint in **Webhook URL**. When the follow-up is due, the agent sends a `POST` request to it containing the conversation and follow-up details, for example:

```json
{
  "conversation_id": "...",
  "agent_id": "...",
  "channel_type": "twilio_whatsapp",
  "follow_up_count": 1,
  "variables": { ... },
  "reminder": { ... }
}
```

`channel_type` is `twilio_whatsapp` or `meta_whatsapp`, depending on how the line is connected.

The response body is sent to the user as the follow-up message. If your endpoint doesn't answer within **10 seconds**, can't be reached, or returns an empty body, the follow-up is skipped.

{% hint style="warning" %}
The agent does not check the HTTP status of the response: whatever body your endpoint returns is sent to the user, even with an error status. Return an error without a body when you don't want a message to go out.
{% endhint %}

***

### Only send messages during certain hours

Turn on **Only send messages during certain hours** and set **From** and **To** to keep follow-ups inside a daily window, for example 09:00 to 21:00. It is on by default for new follow-ups.

* Times use your local time zone, and the window applies every day — there is no weekday selection.
* A follow-up that falls due outside the window waits until it reopens, which also pushes back the follow-ups after it.
* A follow-up is still never sent 24 hours or more after the user's last message.

***

## Adding multiple follow-ups

Add a second or third follow-up with **Add follow-up**. Give each one a longer delay than the previous one to form a natural cadence. For example:

| Follow-up   | Delay  | Content Type   |
| ----------- | ------ | -------------- |
| Follow-up 1 | 30 min | Static Message |
| Follow-up 2 | 2 hrs  | AI Generated   |
| Follow-up 3 | 12 hrs | Static Message |

***

## How the timer resets

Any inbound message from the user **resets all follow-up timers**, and they start again from the agent's next reply. If a team member takes over the conversation, pending follow-ups are not sent.

***

## Sending a file with a follow-up

On WhatsApp, a follow-up with the **AI Generated** content type can include a file — for example a PDF or an image — instead of, or together with, a text reminder. There is nothing to switch on: the agent decides whether a file would help bring the contact back.

How it works:

* The agent attaches **one file per follow-up**, with a short caption. When the caption already says everything, that is the whole follow-up; otherwise the agent sends a separate text message right after the file.
* The agent only attaches a file whose link it already knows — from your **AI Prompt**, from the agent's instructions, or from the conversation itself. It does not search your knowledge base for new files while writing a follow-up.
* The link must be a direct, public `http` or `https` link that opens without a login and without redirecting.
* The file shows up in the [Inbox](/ai-text-agents/inbox/inbox.md) conversation like any other attachment the agent sends.

To steer it, mention the file in the **AI Prompt**:

> *"If the user asked about pricing, send the price list (<https://yourcompany.com/pricing.pdf>) and ask whether they would like to book a call."*

{% hint style="info" %}
If the contact writes back or a team member takes over the conversation before the follow-up goes out, nothing is sent. If the file cannot be delivered, that follow-up is skipped: the agent does not retry it or fall back to a text-only message.
{% endhint %}

***

## Saving your configuration

**Save** in the follow-up window saves the change to your agent's draft. Click **Publish** to make your follow-up changes live.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.dapta.ai/ai-text-agents/setting-up-your-text-agent/follow-ups.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
