*Workflows › Build*

# Integrations

> Workflows reach six integrations: email, calendar, Slack and three accounting packages. They do not all work the same way, and the difference decides who can see the workflow and what fails at run time.

## The six at a glance

| Integration | Steps and triggers | Whose connection | Makes the workflow private? |
| --- | --- | --- | --- |
| Email (Gmail, Outlook, iCloud) | Send, reply, forward, tag, move, mark read or unread, delete, search; find by id; iterate attachments and thread messages; the triggers email received and sent. | The workflow creator's own mailbox. | Yes |
| Calendar (Google, Outlook, iCloud) | Create an event, search events; the triggers calendar event created and updated. | The creator's own calendars. | Yes |
| Slack | Post a message, find a channel, iterate the members of a channel. | The company's Slack, preferring the one the creator connected. | No |
| Xero | Actions of Filmo that send and import invoices, payments and credit notes; the Xero events. | The company's Xero connection. | No |
| Holded | The same family of actions; the Holded events. | The creator's Holded connection if there is one, otherwise the company's most recent. | No |
| QuickBooks | The same family of actions; the QuickBooks events. | The company's QuickBooks connection. | No |

## Email and calendar

Email and calendar steps operate on the personal connections of the person who created the workflow. Never on another member's, and never on those of the person who ran it.

- Because of that, any workflow with a mailbox or calendar step, an email or calendar trigger, or an attachment or thread iterator is forced to «Private» when you save it. Removing the steps does not make it public again. Making it public is refused (409), checking both the draft and the published version.
- If the creator disconnects the mailbox, or leaves the company, the steps fail at run time.
- Each email or calendar step may be tied to a provider (Gmail, Outlook or iCloud). A step tied to one provider only uses accounts of that provider, and a trigger tied to one fires only for accounts of that provider. Publishing is refused when a step is tied to a provider that its chosen account does not belong to. When you start from a template, the steps are tied for you if all of your accounts of that kind use the same provider.
- Accounts of other providers (for example IMAP or Yahoo) have no tile, so a step tied to a provider never uses them.
- The mail triggers also need the email and calendar add-on, and fire only for workflows created by the owner of the mailbox that received the message.

### What the email steps do

| Step | Notes |
| --- | --- |
| «Send email» | Sends from the creator's mailbox. Recipients are split at commas and semicolons; an invalid address is silently dropped as long as one valid recipient remains, and none valid fails the step. The body goes out as plain text, not HTML. Inline attachments are limited to about 2.7 MiB. With no account chosen, it uses the most recently updated valid one. |
| «Reply to an email» | Replies in the same thread, from the mailbox that received the original message. |
| Forward an email | Forwards with a "Fwd:" subject and the original quoted. Attachments are not forwarded. |
| Apply label | Applies a label inside Filmo only; the provider's own labels are not touched. |
| Move to folder | Inbox, archive or trash; it sets the folder, so repeating it does nothing more. |
| Mark as read, Mark as unread | Sets the flag at the provider. |
| Delete an email | Moves it to the trash. It never deletes permanently. |
| Search emails | Searches the copy Filmo keeps of the creator's mailboxes, not the provider live. Up to 50 results, newest first, with sender, subject, date and a snippet. No results is a success with an empty list. Date limits are read as UTC days. With a sender filter, only the 200 most recent messages that meet the other conditions are looked at, so an empty result does not prove that the sender never wrote: combine it with a date or a subject. |
| Find an email by id | Fails if the message is not in the creator's mailboxes. |

### The calendar steps

- «Create calendar event»: needs a title and a start. With no end, the event lasts an hour (a whole day for an all-day event). An end before the start fails. Invitees that are all invalid fail the step. A read-only calendar fails. It will not create the same event twice.
- Search calendar events: up to 50, the earliest by start time; an event that overlaps the period counts. Without a start date you get the 50 earliest events there are, so set one.
- Calendar events a workflow itself creates do not fire the calendar triggers. A message a workflow sends from your mailbox is different: it does fire the "email sent" trigger, as a new run outside the chain limit, so do not put that trigger on a workflow that sends from the same mailbox.

## Slack

- «Post a message» needs a channel id (it looks like `C0123ABCD`, not the name) and a message. «Find channel» turns a name, with or without the `#`, into its id; not finding the channel fails the step.
- The company must have a Slack connected: "There is no active Slack connection in the company" is the failure otherwise.
- Slack steps do not make the workflow private. Slack has no events.

## Xero, Holded and QuickBooks

These have no steps of their own: their operations are actions of Filmo (`xero.…`, `holded.…`, `quickbooks.…`) in the Integrations group of the palette. They need the provider to be connected, and a working configuration. See the [actions reference](https://docs.filmo.io/workflows/reference/actions) for the operations of each package.

- Switching a workflow live (or «Publish and activate») checks that each connected provider the workflow uses is configured for the steps it contains: default accounts, tax maps, a bank account for payments. When something is missing the request is refused (422) with one sentence per provider, such as "Xero needs setup: default sales account, tax map". An expired connection asks you to reconnect.
- That check happens only when you switch live, and only for providers that are connected. A provider that is not connected is not checked: you can switch a workflow live with Xero steps and no Xero, and its runs will fail at those steps. A plain publish and a manual test run do not run the check either.
- In the integration's page, the templates that need a connection that is missing show «Connections missing». The badge never blocks anything.
- Accounting events fire only for documents and payments that are linked to a Filmo record. The unmatched ones emit nothing.
- The operations that void or delete in the accounting package are irreversible there. When no document is linked, or the package says it is already gone, the template leaves a task with the reason. When the package rejects the call itself (Xero and QuickBooks do, for example, for an invoice that has payments), the step fails and so does the run; Holded reports the refusal as a reason and the template leaves a task.
- Reconciliation actions that compare open invoices read only a limited number of documents per run, and every document Holded reads counts against its monthly quota.

> **Note:** Slack, email and calendar need no setup beyond the connection, and are not part of the check. Each accounting provider's templates are explained together in [Templates](https://docs.filmo.io/workflows/templates#accounting).

## Email from Filmo, not from your mailbox

The «Send email from Filmo» step sends from Filmo's own address, to exactly one recipient. It needs no connected mailbox and does not make the workflow private. The email carries a footer saying it was sent on behalf of your company, and replies go to the support address in your company data, when it is a valid email address; without one, the email has no reply-to.

> **Tip:** Use it for notices to your team or to a customer that should not depend on one person's mailbox. Use the mailbox steps when the message must come from, or be read in, a person's inbox.

---

Canonical URL: https://docs.filmo.io/workflows/integrations  
Last updated: 2026-10-09