# Workflow

Workflow is the visual automation builder in the Suger console, for the operational processes the rest of the product does not cover on its own — syncing marketplace data into your CRM with conditional logic, alerting a channel when a deal lands, loading entitlement data into a warehouse, or emailing a report on a schedule. You assemble a workflow from nodes on a canvas and activate it. No code is required, and the pre-built templates often need only a few tweaks — though a JavaScript node is there for the cases that do need code.

Every workflow has the same shape. A **trigger** starts the run; **logic** nodes route, filter, and reshape the data passing through; **action** nodes do the work, whether that is calling an integration, sending a message, or writing a row. A workflow needs a trigger node to run at all, and deactivating a workflow deactivates its trigger with it.

Once a workflow is live, **Execution History** in the console records every run. When one fails, its log shows which node hit the problem and what data was present at that point.

## Start here

- **[Getting Started](/workflow/getting-started/)** — build, test, and activate your first workflow end to end, and plan what its trigger, conditions, and actions should be.
- **[Overview](/workflow/overview/)** — how the builder is organized and what the pre-built template library gives you to start from.

As a worked example, a weekly entitlement report uses a schedule trigger, aggregates your entitlements into a CSV, and uploads the file to Google Drive — three nodes from the library below.

## Node library

### Start a run — triggers

Pick the event that sets the workflow off.

| Node | What you use it for |
|---|---|
| [Suger Notification Event](/workflow/suger-notification-event-trigger/) | Run whenever a Suger notification event arrives, narrowed to the event types you select. |
| [Schedule](/workflow/schedule-trigger/) | Run on a repeating clock — every few seconds, or at a fixed time on a given day of the month. Only the node's first rule is active. |
| [Webhook](/workflow/webhook/) | Run when an outside system calls the node's URL; you choose the HTTP method and how the call is answered. |
| [Form](/workflow/form-trigger/) | Publish a web form and run on submission, with the submitted fields available downstream as JSON. |
| [Manual](/workflow/manual-trigger/) | Start a run yourself. No parameters — useful while you are still testing. |

### Route and reshape data — logic and control

Decide which items continue, and in what shape.

| Node | What you use it for |
|---|---|
| [If](/workflow/if/) | Split the run into a true branch and a false branch on conditions you define. |
| [Switch](/workflow/switch/) | Send items to one of several outputs, using comparison rules or an expression. |
| [Filter](/workflow/filter/) | Drop the items that match your conditions so they go no further. |
| [Merge](/workflow/merge/) | Bring two streams back together by appending them, combining matching items, or multiplexing. |
| [Aggregate](/workflow/aggregate/) | Consolidate many input items into one — aggregate selected fields, or combine lists across items. |
| [Limit](/workflow/limit/) | Cap how many items continue, keeping either the first or the last N. |

### Connect another system — integrations

Each of these needs its integration connected before the node will run.

| Node | What you use it for |
|---|---|
| [Salesforce](/workflow/salesforce/) | Create, update, get, or delete Salesforce records — accounts, leads, contacts, attachments, and custom objects. |
| [HubSpot](/workflow/hubspot/) | Work with HubSpot contacts, companies, deals, engagements, tickets, custom objects, and their associations. |
| [NetSuite](/workflow/netsuite/) | Manage NetSuite customers, non-inventory sale items, and sales orders through its REST API. |
| [QuickBooks Online](/workflow/quickbooks/) | Create, update, and retrieve QuickBooks bills, invoices, customers, and related accounting records. |
| [Snowflake](/workflow/snowflake/) | Execute a SQL query and pass the returned rows to the next node. |
| [Stripe](/workflow/stripe/) | Read the account balance and manage coupons, customers, payment methods, payment intents, and subscriptions. |
| [Chargebee](/workflow/chargebee/) | Manage Chargebee customers, invoices, and subscriptions. |
| [Google BigQuery](/workflow/google-big-query/) | Insert rows into a BigQuery table, or query one and use the result in the workflow. |
| [Google Cloud Storage](/workflow/google-cloud-storage/) | Create, delete, and read storage buckets and the objects inside them. |
| [Google Drive](/workflow/google-drive/) | Copy, move, and manage Drive files and folders — for example, drop a generated report in a shared folder. |
| [Google Mail](/workflow/google-mail/) | Send email from a connected Gmail account, with recipients and subject built from workflow data. |
| [Google Sheet](/workflow/google-sheet/) | Read rows from, and write rows to, a sheet inside a Google Sheets document. |
| [Suger Slack](/workflow/suger-slack/) | Post a message to a Slack channel, or look up a Slack user. |
| [Suger Microsoft Teams](/workflow/suger-microsoft-teams/) | Post a plain-text, Markdown, or HTML message to a Microsoft Teams channel. |
| [Suger Email](/workflow/suger-email/) | Send email through Suger's own email service, with no integration to connect first. |

### Custom code and utilities

For the steps no built-in node covers, and the housekeeping around them.

| Node | What you use it for |
|---|---|
| [Suger Code](/workflow/suger-code/) | Run JavaScript mid-workflow; type `$` in the editor to autocomplete the Suger APIs available to it. |
| [HTTP Request](/workflow/http-request/) | Call any external API — set the method, URL, query parameters, headers, body, and authentication. |
| [HTML](/workflow/html/) | Render an HTML template with `{{ }}` expressions, or pull values back out of an HTML document. |
| [Respond to Webhook](/workflow/respond-to-webhook/) | Control what a webhook-triggered workflow returns to its caller, and at which point in the run. |
| [Delete Execution](/workflow/delete-execution/) | Discard a run's stored execution data at the end of the workflow, when you will not need it again. |
| [Sticky Note](/workflow/sticky-note/) | Leave a resizable Markdown note on the canvas so teammates can read what the workflow does. |

## Scope and limits

:::info
Integration nodes depend on a connection made outside the builder — set it up under [Integrations](/integrations/) before you add the node, or it has nothing to authenticate with.

Workflows automate around the Suger product rather than replacing it. For the console features themselves — products, offers, entitlements, metering — see [Get Started](/get-started/).
:::
