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

# Event-Based Triggers

> Trigger a workflow when a contact performs an action or a database change occurs.

Event-based triggers enroll contacts into a workflow each time a specific event happens. For example, a form submission, email open, or field change. Unlike [criteria-based triggers](/product-docs/workflows/triggers/criteria-based), which continuously evaluate whether a contact matches a set of conditions, event-based triggers fire in response to a discrete occurrence.

## Available triggers

### Web interactions

<AccordionGroup>
  <Accordion title="Form is submitted">
    Fires when a contact submits a form tracked in Conversion.

    | Field        | Description                                                                                                                                                                                |
    | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    | **Form**     | Select one or more specific forms, or leave blank to trigger on any form submission                                                                                                        |
    | **Page URL** | Filter by the URL where the form was submitted. Supports operators: equals, does not equal, contains, does not contain, contains any of, does not contain any of, is any of, is not any of |
  </Accordion>

  <Accordion title="Page is visited">
    Fires when a contact visits a tracked page on your website.

    | Field            | Description                                        |
    | ---------------- | -------------------------------------------------- |
    | **Page URL**     | Filter by the page URL                             |
    | **UTM Source**   | Filter by UTM source parameter                     |
    | **UTM Medium**   | Filter by UTM medium parameter                     |
    | **UTM Campaign** | Filter by UTM campaign parameter                   |
    | **UTM Term**     | Filter by UTM term parameter                       |
    | **Referrer**     | Filter by referring URL                            |
    | **Type**         | Filter by visit type (direct, organic, paid, etc.) |

    Each field supports string comparison operators (equals, contains, etc.). All fields are optional — expand only the ones you need.
  </Accordion>
</AccordionGroup>

### Email events

All email triggers let you optionally select one or more specific emails to scope the trigger, or leave it blank to trigger on any email. Contacts flagged as bots are automatically filtered out and will not trigger email events.

<AccordionGroup>
  <Accordion title="Email is sent">
    Fires when an email is sent to the contact.

    | Field     | Description                                                      |
    | --------- | ---------------------------------------------------------------- |
    | **Email** | Select one or more specific emails, or leave blank for any email |
  </Accordion>

  <Accordion title="Email is delivered">
    Fires when an email is successfully delivered to the contact.

    | Field     | Description                                                      |
    | --------- | ---------------------------------------------------------------- |
    | **Email** | Select one or more specific emails, or leave blank for any email |
  </Accordion>

  <Accordion title="Email is opened">
    Fires when the contact opens an email.

    | Field     | Description                                                      |
    | --------- | ---------------------------------------------------------------- |
    | **Email** | Select one or more specific emails, or leave blank for any email |
  </Accordion>

  <Accordion title="Email bounced">
    Fires when an email to the contact bounces.

    | Field     | Description                                                      |
    | --------- | ---------------------------------------------------------------- |
    | **Email** | Select one or more specific emails, or leave blank for any email |
  </Accordion>

  <Accordion title="Email is clicked">
    Fires when the contact clicks a link in an email.

    | Field     | Description                                                      |
    | --------- | ---------------------------------------------------------------- |
    | **Email** | Select one or more specific emails, or leave blank for any email |
  </Accordion>
</AccordionGroup>

### Database actions

<AccordionGroup>
  <Accordion title="Field is changed">
    Fires when a field value changes on the contact or company record.

    | Field              | Description                                             |
    | ------------------ | ------------------------------------------------------- |
    | **Field to match** | Select one or more contact or company fields to monitor |
    | **Old value**      | Optionally filter on the previous value of the field    |
    | **New value**      | Optionally filter on the new value of the field         |

    Both old value and new value support comparison operators (equals, does not equal, contains, etc.). You can use these to trigger only on specific transitions — for example, when a lead status changes from "Open" to "Qualified."
  </Accordion>

  <Accordion title="Contact is added to audience">
    Fires when a contact is added to an audience.

    | Field        | Description                                                            |
    | ------------ | ---------------------------------------------------------------------- |
    | **Audience** | Select one or more specific audiences, or leave blank for any audience |
  </Accordion>

  <Accordion title="Contact is removed from audience">
    Fires when a contact is removed from an audience.

    | Field        | Description                                                            |
    | ------------ | ---------------------------------------------------------------------- |
    | **Audience** | Select one or more specific audiences, or leave blank for any audience |
  </Accordion>

  <Accordion title="Contact is added to campaign">
    Fires when a contact is added to a campaign.

    | Field        | Description                                                            |
    | ------------ | ---------------------------------------------------------------------- |
    | **Campaign** | Select one or more specific campaigns, or leave blank for any campaign |
  </Accordion>

  <Accordion title="Contact is removed from campaign">
    Fires when a contact is removed from a campaign.

    | Field        | Description                                                            |
    | ------------ | ---------------------------------------------------------------------- |
    | **Campaign** | Select one or more specific campaigns, or leave blank for any campaign |
  </Accordion>

  <Accordion title="Contact is created">
    Fires when a new contact is created in Conversion. This trigger has no additional configuration fields.
  </Accordion>
</AccordionGroup>

### Custom events

<AccordionGroup>
  <Accordion title="Custom event occurred">
    Fires when a custom event is tracked for a contact via the [Events API](/api-reference/overview).

    | Field    | Description                                                                                                                                                                                          |
    | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **Name** | The name of the custom event to trigger on (e.g., `LOG_IN`, `feature_activated`). Required                                                                                                           |
    | **Data** | Optionally filter by data properties attached to the event. Enter a data path and compare its value using an operator. You can add multiple data conditions — all must match for the trigger to fire |

    Since custom event data is schema-less, all data comparisons use string-based operators: equals, does not equal, contains, does not contain, contains any of, does not contain any of, is any of, is not any of.

    <Tip>
      Custom events are sent through the API and are always associated with a specific contact. When the trigger fires, that contact is the one enrolled into the workflow. See the [Events API](/api-reference/overview) for details on tracking events.
    </Tip>
  </Accordion>
</AccordionGroup>

## Filter

Every event-based trigger supports an optional **filter** that adds an additional eligibility check before a contact enters the workflow. Even if the event fires, the contact will only enter if they also match the filter conditions. Filters use the [Unified Query Engine](/product-docs/unified-query-engine/overview).

For example, you could configure a "Form is submitted" trigger with a filter that requires the contact's company size to be greater than 50. The workflow would only enroll contacts who submit the form **AND** work at companies with more than 50 employees.

## Re-enrollment

By default, contacts can only enter the workflow once. When you enable re-enrollment, the contact enters the workflow **every time** the event occurs.

This is different from [criteria-based triggers](/product-docs/workflows/triggers/criteria-based), where re-enrollment requires the criteria to transition from unmet back to met. With event-based triggers, each event occurrence is treated independently.

## Exit conditions

Exit conditions define when a contact should leave the workflow early, regardless of where they are in the sequence. You configure exit conditions using the [Unified Query Engine](/product-docs/unified-query-engine/overview). When a contact meets an exit condition, they are immediately removed from the workflow.
