# CSAT Follow-Up Campaign
URL: /recipes/csat-follow-up
Type: howto
Description: Run daily to find recently solved Zendesk tickets, then send each customer a personalized follow-up email asking about their experience.
Keywords: csat follow-up campaign, csat-follow-up, recipe, workflow template, workflow builder, zendesk, resend
Run daily to find recently solved Zendesk tickets, then send each customer a personalized follow-up email asking about their experience.

<Callout type="info">
  **Prerequisites:** Connect **Zendesk**, **Resend** before adding this recipe. See [Integrations](/integrations).
</Callout>

How it works [#how-it-works]

Each box is a block; arrows show the order Stylo runs them, and branch labels show the path taken on each outcome.

<Mermaid
  chart="flowchart TD
  trigger[&#x22;Daily 9am&#x22;]
  search_solved[&#x22;Search Solved Tickets&#x22;]
  has_tickets[&#x22;Any Tickets Found?&#x22;]
  loop_tickets[&#x22;For Each Ticket&#x22;]
  get_ticket[&#x22;Get Ticket Details&#x22;]
  generate_email[&#x22;Generate Follow-Up&#x22;]
  send_email[&#x22;Send Follow-Up Email&#x22;]
  trigger --> search_solved
  search_solved --> has_tickets
  has_tickets -->|&#x22;Has Tickets&#x22;| loop_tickets
  get_ticket --> generate_email
  generate_email --> send_email"
/>

Parameters [#parameters]

Set these when you add the recipe to your workspace:

| Parameter      | Type   | Default                            |
| -------------- | ------ | ---------------------------------- |
| `from_email`   | string | `support@yourcompany.com`          |
| `company_name` | string | `Your Company`                     |
| `survey_url`   | string | `https://yourcompany.com/feedback` |

Blocks used [#blocks-used]

Every block in this recipe, linked to its reference page where one exists:

| Block                                               | Type                         | What it does                                                                                                       |
| --------------------------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| [Schedule](/reference/blocks/trigger-schedule)      | `trigger/schedule`           | Trigger workflow on a cron schedule                                                                                |
| Search Tickets                                      | `zendesk/search-tickets`     | Search for Zendesk tickets                                                                                         |
| [Condition](/reference/blocks/system-condition)     | `system/condition`           | Branch the workflow based on a boolean expression                                                                  |
| [Loop](/reference/blocks/system-loop)               | `system/loop`                | Iterate over items, a fixed count, or while a condition is true                                                    |
| Get Ticket Context                                  | `zendesk/get-ticket-context` | Get complete ticket context (ticket, conversation, attachments, customer, assignee, organization) optimized for AI |
| [Generate Text](/reference/blocks/ai-generate-text) | `ai/generate-text`           | Generate text using AI models                                                                                      |
| [Send Email](/reference/blocks/resend-send-email)   | `resend/send-email`          | Send an email via Resend                                                                                           |

When to use it [#when-to-use-it]

Use this to measure satisfaction after a ticket is resolved. It runs on a schedule, finds recently solved tickets, and emails each customer a short, personalized follow-up linking to your survey.

Adapt it [#adapt-it]

This recipe is a starting point. To fit it to your workspace:

* Set the `from_email`, `company_name`, and `survey_url` parameters to your own sender, brand, and feedback link.
* Change the schedule trigger's cadence if daily is too frequent or not frequent enough.
* Edit the **Search Solved Tickets** filters to narrow which resolved tickets receive a follow-up.

Related [#related]

* [All recipes](/recipes)
* [Workflow blocks reference](/reference/blocks)
* [Workflow Builder overview](/workflow-builder-overview)
* [Integrations](/integrations)