
# FluentCRM

> **Who is this for?** Businesses that keep their email list in FluentCRM on their own WordPress site, and want conversations to feed it. If you don't use FluentCRM, you can skip this page.
>
> Use a different CRM or email tool? Anything with an API can still be connected: see [Connecting a Tool We Do Not List](connecting-other-tools.md).

FluentCRM is a CRM and email marketing plugin that lives inside WordPress: contacts, tags, lists and the campaigns you send them. Connecting it to <span data-t="appName">Your AI Connector</span> gives your [automations](../automations/automations.md) steps that write into it, so a new WhatsApp lead becomes a FluentCRM contact with the right tag on it, and the email sequence you already built takes over from there. No exporting, no copy and paste, no waiting until Friday.

Nothing is installed on your WordPress site. You connect your own site with your own login details, and we call the API FluentCRM already exposes.

**Availability:** Automations is available on every account. It's already in your sidebar, and there's nothing to enable or request.

---

## What You Need

FluentCRM rides on the WordPress REST API, so it takes exactly the same details as the [WordPress](wordpress.md) connection:

- The **WordPress site FluentCRM runs on**, reachable over **https**, on WordPress **5.6 or newer**.
- **Pretty permalinks** switched on (**Settings → Permalinks**, anything other than "Plain"), which is what makes the `/wp-json/` address work.
- An **application password** for the WordPress user the automation should act as: **Users → Profile → Application Passwords → Add New**. WordPress shows it once, in blocks separated by spaces. Copy it with the spaces.

That user needs to be allowed to manage FluentCRM in WordPress. Your real login password is never used, and deleting the application password later revokes exactly this connection.

---

## Connecting FluentCRM

You connect from inside an automation, the first time you use a FluentCRM step.

1. Open **Automations** in the sidebar (under the **AI Studio** group) and open or create an automation.
2. Add a step and search for **FluentCRM** in the step picker.
3. Pick the action you want. The step asks you to connect first.
4. Fill in the three fields:
   - **Site URL** is the address of the WordPress site FluentCRM runs on, starting with `https://`.
   - **WordPress username** is the username that user signs in with, not their email.
   - **Application password** is the password you created above, pasted with its spaces.
5. Click connect.

We check the details against your site before saving anything, by reading one contact back out of FluentCRM. Wrong details, or a site where `/wp-json/` doesn't resolve, are refused on screen with the reason. Your application password is stored encrypted and never shown back to you.

---

## Tags and Lists Are Given As IDs

This is the one thing to know before you build anything. Every field that takes tags or lists wants their **ID numbers**, comma separated, not their names. `1, 2` works; `Newsletter, VIP` does not, and the editor flags it under the field. An id that only turns out wrong when the automation runs (for example one that came from an earlier step) stops the step with an error, instead of quietly running without that tag.

You'll find the numbers in FluentCRM: open **Tags** or **Lists** in the FluentCRM menu, and each row's id is in the address bar when you open it. Write down the handful you plan to use once, and you're done.

---

## The Actions

Each action is a step on the automation canvas, and every field accepts data from earlier steps with the usual insert-data buttons.

### Create or update contact

Adds a contact, or updates the one that already has this email. Sending the same email twice updates them rather than failing, so you can run this on every new lead without checking first.

- **Email** is the contact's email address. Required. Usually the contact's email from the trigger.
- **First name**, **Last name** and **Phone** are optional.
- **Status** is picked from a list: Subscribed, Pending, Unsubscribed or Transactional. Required, because FluentCRM needs one, and it applies to existing contacts too: **Subscribed re-subscribes someone who had unsubscribed**, so pick it only when the person asked to join. **Pending** sends FluentCRM's double opt-in email.
- **Tag IDs** are tags to put on them, comma separated. Optional.
- **List IDs** are lists to add them to, comma separated. Optional.

### Find contact by email

Looks a contact up by email address and returns their id, their tags and their lists.

- **Email** is the address to look up. Required.

Its output is what the steps below need, because they work on a contact id.

### Add tags to contact

Attaches one or more tags to a contact who already exists.

- **Contact ID** is which contact. Required. Normally taken from a **Find contact by email** step earlier in the automation.
- **Email** is the contact's email. Required, because FluentCRM asks for the email on every update.
- **Tag IDs** are the tags to attach, comma separated. Required.
- **Change status** is optional. Left on **Keep current status**, the contact's status is not touched, so tagging someone who unsubscribed does not subscribe them again.

### Remove tags from contact

The same fields, taking tags off instead of putting them on.

### Add contact to lists

- **Contact ID**, **Email** and **List IDs** (comma separated), with the same optional **Change status**.

---

## An Example Automation

**Every new WhatsApp lead lands in FluentCRM, tagged by where they came from.**

1. **Trigger:** incoming message from a new contact.
2. **Create or update contact**, with the contact's email, first name and phone from the trigger, and the **List ID** of your main list.
3. **Add tags to contact** is not needed here, because step 2 can carry the **Tag IDs** already. Use it when the tag comes later in the conversation instead.

And the version where the tag comes later, which is the more useful one:

1. **Trigger:** a tag is added to the contact, say `asked about pricing`, by your AI agent.
2. **Find contact by email**, with the contact's email.
3. **Add tags to contact**, using the id from step 2, the same email, and the FluentCRM tag id for your pricing sequence.

FluentCRM's own automation then sends the email sequence that tag starts. The conversation happens on WhatsApp, the nurture happens by email, and nobody moves a row between them by hand.

---

## Good to Know

- **Steps that take a contact ID come after a Find step.** That is the normal shape: find the contact, then act on the id the find step returned.
- **Outputs travel forward.** Everything an action returns is available to later steps as variables.
- **Ids, not names,** for every tag and list field. A name in that field is flagged in the editor and stops the step when it runs.
- **Some hosts strip the Authorization header** before WordPress sees it, which makes a correct application password look wrong. If your details are definitely right and the connection is still refused, that is the thing to ask your host.
- **There is no trigger that watches FluentCRM.** Nothing polls it for changes. To have FluentCRM start an automation, add a **Webhook** trigger to the automation and point a FluentCRM outgoing webhook at the address it gives you.
- **Anything not on the list above** can still be done with the **HTTP request** step.

---

## Next Steps

- [Automations](../automations/automations.md): triggers, steps, conditions and how a workflow is put together.
- [WordPress](wordpress.md): posts and users on the same site, with the same connection details.
- [MemberPress](memberpress.md): memberships and payments on your WordPress site.
- [Connecting a Tool We Do Not List](connecting-other-tools.md): custom functions, the API and webhooks.
