> For the complete documentation index, see [llms.txt](https://docs.zigpoll.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zigpoll.com/polls/behavior-settings.md).

# Workflows

What your survey does with a response — notifications, reminders, actions, analysis and Shopify write-back

Workflows are everything a survey does *after* someone responds. Open a survey, go to **Settings → Workflows**, and pick a tab:

| Tab               | What it controls                                                                         |
| ----------------- | ---------------------------------------------------------------------------------------- |
| **Notifications** | Who on your team is emailed when a response comes in                                     |
| **Reminders**     | A one-time nudge to people who were sent or shown the survey but didn't respond          |
| **Actions**       | Rules that run when certain answers are given — webhooks, emails, integrations, Shopify  |
| **Analysis**      | Sentiment analysis and smart classification of responses                                 |
| **Shopify**       | Writing responses, tags and customers back to your Shopify store (Shopify accounts only) |

Every tab shares one **Save Changes** button.

{% hint style="info" %}
Looking for how the survey *appears* — pop-up timing, exit intent, hiding the close button? Those live under [Delivery](/polls/visibility-settings.md) and **Settings → General**.
{% endhint %}

## Notifications

**Email Notifications** decides when Zigpoll emails your team about this survey:

* **Email for every partial or complete response**
* **Email only for completed responses**
* **Email only when the respondent gave an email address**
* **Email only when there is a write-in**
* **Do not email me**

Notifications go to your account's recipients unless you enter different addresses in **Notification Email Recipients**. See [what a notification email includes](/notifications.md#what-a-notification-email-includes), plus account-wide recipients, weekly recaps and troubleshooting, in [Notifications](/notifications.md).

## Reminders

**Nudge Non-Responders** sends one reminder to anyone who was sent or shown the survey but hasn't answered. The reminder cancels itself if they respond first. Set the delay, and optionally customize the reminder subject (email) or message (SMS).

{% content-ref url="/pages/VCTpnYbnH8cUwmOfaIQU" %}
[Nudge Non-Responders](/polls/nudge-non-responders.md)
{% endcontent-ref %}

## Actions

The **Actions** tab runs actions at the **survey level**, based on how someone answers across your entire survey.

### How it works

1. Click **Add Action Logic** to create a new rule.
2. Set one or more **conditions** — for example "survey **is completed**", "survey **is partially completed**", or a specific question's answer. Conditions can be combined with AND/OR logic.
3. Choose one or more **actions** to trigger when the conditions are met.
4. Press **Save Changes**.

### Available actions

**trigger webhook** — Send a POST request to a URL with the full response data.

**send email** — Send an email template to the respondent (**send email to respondent**), to your notification recipients (**send email to myself**), or to addresses you enter (**send email to address**). **send survey request** emails the respondent another survey.

### Integration actions

If you have integrations connected, their actions appear automatically. For example:

* **Slack** — send a notification to a Slack channel
* **Jira**, **ClickUp**, **HubSpot** — create an issue, task or deal
* **Zendesk**, **Gorgias**, **Richpanel**, **Gladly** — open a support ticket or conversation
* **Notion** — add a row to a Notion database
* **Klaviyo** — **subscribe to klaviyo list** adds the respondent to a Klaviyo list you pick. Use it when only some respondents should join, for example those who give a certain answer. See [Klaviyo](/integrations/klaviyo.md#adding-respondents-to-a-list) for list options and the marketing-consent warning
* **Mailchimp**, **Drip**, **Brevo**, **dotdigital**, **Omnisend**, **Marketo** — subscribe or add the respondent as a contact
* **Braze**, **RudderStack**, **Customer.io**, **Attentive**, **Iterable**, **Permutive** — track the response on the respondent's profile
* **Google Sheets** — write response data to a Google Sheet. Zigpoll creates the sheet automatically when you save, with headers based on your survey questions — you'll be emailed a link when the first response comes in. See [Sync Survey Responses to Google Sheets](/tutorials/sync-survey-responses-to-google-sheets.md)

### Shopify actions

If you have a Shopify store connected, these actions are available:

* **add tag** → **add customer tag** / **add order tag**
* **add metafield** → **add customer metafield** / **add order metafield**
* **generate reward** → **generate discount code**, **add store credit**, **add free shipping**

{% hint style="info" %}
Actions that require an email address (Klaviyo, Mailchimp, Drip, Omnisend and similar) only fire if Zigpoll has one for the respondent. Shopify tag and metafield actions only fire when the response is tied to a Shopify customer or order — see [Why a customer tag doesn't appear](#why-a-customer-tag-or-metafield-doesnt-appear).
{% endhint %}

### Saving the answer with `{{ value }}`

Tag and metafield actions take a value. Enter `{{ value }}` to save the submitted answer instead of fixed text. One rule then covers every answer option, instead of one rule per option. For tags, pick **response** in the dropdown next to the field, and Zigpoll fills in `{{ value }}` for you.

* On a question's own logic, `{{ value }}` is that question's answer.
* On the Workflows **Actions** tab, `{{ value }}` is the answer to the first question named in the rule's conditions. If the rule only says "survey is completed", it's the first answered question in the survey.
* For a multi-select answer, `{{ value[0] }}` is the first selected option, `{{ value[1] }}` the second, and so on.

**Why a literal `{{value}}` shows up in Shopify.** The placeholder must be the whole value. Zigpoll only replaces it when the field holds nothing but `{{ value }}` (spaces don't matter) or `{{ value[n] }}`. Anything else is written exactly as typed:

* Text around it, like `survey-{{ value }}` — write a fixed tag instead, or tag with `{{ value }}` alone.
* Other brackets, like `{value}` or `[[value]]`.
* `{{ value }}` typed into **Shopify Customer Tag** on the Shopify tab. That field is always a fixed tag; use an **add customer tag** action for answer-based tags.

On the Actions tab, if no answered question can be found for the rule, Zigpoll skips the write rather than saving the placeholder.

### Combining multiple actions

You can add multiple actions to a single rule. For example, when a survey is completed you could send a Slack notification, create a Jira issue, and subscribe the respondent to a Klaviyo list. Adding the same tag to both the customer and the order is fine. Shopify never stores a tag twice on the same record.

You can also create multiple independent rules with different conditions and actions by clicking **Add Action Logic** again.

## Analysis

**Sentiment Analysis** — scores the sentiment of each Write-In. On by default.

**Smart Classification** — sorts each response into one of the labels you define (for example *Shipping*, *Product quality*, *Price*). Turn it on and enter your labels. Zigpoll classifies new responses as they arrive.

## Shopify

Shown for Shopify accounts only. These settings write survey data back into Shopify whenever a response is tied to a matching order or customer.

| Setting                                  | What it does                                                                                                                                                                                |
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Write to Order Details**               | Adds each answer to the order's **Additional Details** section.                                                                                                                             |
| **Write to Order Notes**                 | Adds the answers to the order's **Notes**.                                                                                                                                                  |
| **Write to Customer Notes**              | Adds the answers to the Shopify customer's notes.                                                                                                                                           |
| **Write to Customer Metafields**         | Writes each answer to its own metafield on the customer, for use in Flow, segments and themes. Turning it on shows **Metafield Namespace**.                                                 |
| **Tag Customers**                        | Tags the Shopify customer. Set the tag in **Shopify Customer Tag** (default `Completed Zigpoll Survey`). On by default.                                                                     |
| **Create New Customers**                 | When a response includes an email that isn't a Shopify customer yet, creates the customer.                                                                                                  |
| **Accepts Marketing**                    | See [below](#what-accepts-marketing-does).                                                                                                                                                  |
| **More Options → Order Lookup Attempts** | Shopify processes orders asynchronously, so order data can lag the response. Zigpoll retries the lookup by default; set it lower if you'd rather your actions and integrations fire sooner. |

{% hint style="info" %}
Tag, metafield, discount and store-credit writes that depend on *how* someone answered are rules on the [Actions](#shopify-actions) tab, not here.
{% endhint %}

### When Zigpoll writes to Shopify

Everything on this tab, the Shopify actions, and the [Shopify Flow](/shopify-app/shopify-flow.md) triggers run together, once the response settles:

* **About a minute after the last question**, when the person completes the survey.
* **About 10 minutes after their last answer**, when they stop partway, or when **Allow Edits** is on. Partial responses are written too.

For order-based surveys, Zigpoll then looks up the order, retrying for several minutes if Shopify hasn't finished processing it (see **Order Lookup Attempts**). So a tag or note can take a few minutes to appear. Refresh the customer or order in Shopify before assuming it failed.

{% hint style="info" %}
**Only want to tag completed responses?** **Tag Customers** also runs for partial responses. Turn it off, then on the **Actions** tab add a rule: survey **is completed** → **add customer tag**.
{% endhint %}

### Order Details and Order Notes reach other systems

{% hint style="warning" %}
Order **Additional Details** and **Notes** aren't private to Shopify admin. Packing slip templates, 3PL and fulfillment-app imports, and ERPs may print or import them. If survey answers are turning up on packing slips or breaking an order import, turn those two settings off.
{% endhint %}

Zigpoll's post-purchase templates turn **Write to Order Details** on. To stop writing to the order while keeping the data in Shopify:

1. Open the survey and go to **Settings → Workflows → Shopify**.
2. Turn off **Write to Order Details** and **Write to Order Notes**.
3. Keep **Write to Customer Metafields** on, or add an **add order metafield** action on the **Actions** tab if you need the answer on the order.
4. Press **Save Changes**.

Metafields aren't printed on packing slips or sent to fulfillment apps unless something is set up to read them.

**What Zigpoll writes on the order:**

* **Additional Details:** one line per question. The name is `Zigpoll:` followed by the question's handle; the value is the answer. Options in a multi-select answer are separated by the delimiter set under **Settings → Data Export → Delimiter** (a comma by default). For a form question, each field is written as `Label: value`, and repeated labels are numbered (`Preferred Time 1`, `Preferred Time 2`).
* **Notes:** a block between `*** Start Zigpoll ***` and `*** End Zigpoll ***`, one `handle: answer` line per question. A later write replaces the block instead of adding another.

**Colons or slashes break my importer.** The field names can't be renamed, and `Zigpoll:` always contains a colon. You can remove special characters from the rest: open the question, turn on **Custom Handle**, and enter a plain handle. Slashes inside an answer come from the answer option text. If the importer still rejects the fields, turn off **Write to Order Details**.

### Metafield namespace and key

Use these to find Zigpoll's data in Shopify Flow, customer segments and Liquid.

**Write to Customer Metafields** writes one customer metafield per question:

* **Namespace:** the **Metafield Namespace** field. If you never change it, Zigpoll writes to `zigpoll`.
* **Key:** the question's handle. That's the question title, unless you set a **Custom Handle** on the question.
* **Type:** `multi_line_text_field`. If you've already created a metafield definition with that namespace and key and a different type, Zigpoll retries with the definition's type.

To pick an exact namespace and key for one question, open the question and turn on **Custom Metafield Configuration**, under the question's **More Options**. It appears once **Write to Customer Metafields** is on. Enter a **Namespace** and **Key**, such as `zigpoll` and `hear_about_us`. A short key is much easier to reference than a full question title.

**add customer metafield** and **add order metafield** actions take the namespace and key together as `namespace.key` in the first box, and the value — fixed text or `{{ value }}` — in the second.

In Shopify Flow, reference the metafield by that namespace and key, for example `zigpoll.hear_about_us`. Survey answers are also in the Flow trigger's own **Survey** data; see [Shopify Flow](/shopify-app/shopify-flow.md).

### Why a customer tag or metafield doesn't appear

**It hasn't been written yet.** Writes happen a minute or more after the survey is completed, and about 10 minutes after the last answer on a partial response. See [When Zigpoll writes to Shopify](#when-zigpoll-writes-to-shopify).

**The response isn't tied to a Shopify customer.** Zigpoll can only tag a customer it can identify:

* **On post-purchase surveys:** the customer on the order.
* **On any survey:** an email address in the response that matches a customer, or creates one when **Create New Customers** is on.
* **When passed in:** a `shopify_customer_id` passed to the survey as metadata.

A guest visitor who never gives an email has nothing to tag. Neither does an order with no customer attached. Order tags and order metafields need the order instead. Email and link surveys only have the order if the link passes it, such as `?shopify_order_id=`.

**Tag Customers is off,** or you expected an answer-based tag from the Shopify tab. Answer-based tags are **add customer tag** actions.

**The value was too long or empty.** Order tags are cut to 40 characters and customer tags to 255. An action whose `{{ value }}` resolves to nothing writes nothing.

**A metafield definition has a type the answer doesn't fit.** If you created the definition yourself, check its type in Shopify. Text types always work.

### What Accepts Marketing does

When Zigpoll has an email address for the respondent, **Accepts Marketing** marks that Shopify customer as subscribed to email marketing, and to SMS marketing when the survey collected a phone number. It applies to customers Zigpoll creates and to existing customers who aren't already subscribed. It never unsubscribes anyone.

Leave it off unless your survey asks for marketing consent. In accounts created on or after August 13, 2026, new surveys start with it off. In older accounts it's on unless you turn it off.


---

# 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.zigpoll.com/polls/behavior-settings.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.
