# Guides

End-to-end recipes that combine Salfio integrations, webhooks, and Claude Code routines to automate real workflows.

The reference docs explain what each Salfio surface does. These guides show what to *build* with them. Most recipes stitch multiple pieces together — a Salfio integration, an outbound webhook, a Claude Code routine — and walk you from prerequisites to a verified, working automation; others are straight API how-tos you can drop into your own onboarding scripts.

## Recipes

### Manage clients from the assistant

The Salfio assistant — in the Slack @mention/DM and the dashboard chat — can create and update clients, set labels, add notes, answer integration questions, and manage channel assignment rules conversationally. Destructive actions always ask for confirmation first.

### Draft a meeting recap email in Gmail

When a meeting captured by Salfio's meeting bot lands in your activity stream, fire a Claude Code routine that drafts a recap email straight into your Gmail Drafts folder. The routine pulls client context and conversation history from Salfio so the recap reads like you wrote it.

### Draft a reply to an inbound email

When a new email lands in Salfio via Gmail, fire a Claude Code routine that writes the reply you'd send and saves it as a Gmail draft. The routine reads the open thread, prior commitments, and the tone you use with that client before drafting.

### Assign a Slack channel to a client over the API

Discover your organization's integrations and a Slack integration's channels, then bind a channel to a client so its messages are assigned automatically — entirely over the API or MCP, no dashboard. The recipe for onboarding clients programmatically.

### Forward card feedback from your own product

Render Salfio cards in your own product, and send back the ones your users reject. Read a client's cards to get the card value id, then post a category and your user's own words against it — so card quality is measured against real signal instead of anecdotes.

## How they fit together

The automation recipes wire the same three pieces: integrations supply the data, a Salfio webhook fires the event, and a Claude Code routine acts on it. Once you've completed one of those, the next is mostly a swap of the event type and the routine prompt — the connectors, the credential flow, and the webhook configuration are the same.

The API recipes — assigning a Slack channel, forwarding card feedback — need none of that machinery. They are plain HTTP against `api.salfio.com/v1` with a Bearer key, and drop straight into an onboarding script or your own product's UI.

If you're new to Salfio webhooks, skim the [Webhooks reference](/docs/api/webhooks) first — it covers the payload envelope, transports, and retry behaviour these recipes build on.

## Related pages

- [Administrator Tools](./administrator-tools.md)
- [Agent Tools](./mcp-external-servers.md)
- [Assign a Slack channel to a client over the API](./guides-assign-slack-channel.md)
- [Authenticated health check](./api-reference-gethealth.md)
- [Authentication](./api-authentication.md)
- [Cards](./cards.md)
- [Changelog](./changelog.md)
- [Changelog](../changelog.md)
- [Connect a workspace](./getting-started-connect-workspace.md)
- [Connect an integration](./getting-started-connect-integration.md)

# Agent Instructions

This portal answers questions programmatically. To receive a synthesized,
source-cited answer instead of crawling page by page, append the `?ask=`
query parameter to any page URL on this site:

    /guides/quickstart?ask=how+do+I+authenticate

Optional parameters:

- `&goal=<what-you-are-trying-to-do>` steers the answer toward your
  objective (e.g. `&goal=write+a+python+client`).
- `&version=<label>` scopes the answer to a mounted version when the
  portal publishes more than one.

The response is `text/markdown`: the answer followed by a `# Sources` list
of the portal pages it was grounded in. Status codes are the contract:

- `200` — the answer; `402` — the portal owner’s plan or answer credits are
  exhausted (surface this to your operator; do NOT retry); `429` — you are
  rate-limited; back off for the `Retry-After` seconds; `503` — the answer
  lane is temporarily unavailable; fall back to crawling the `.md` pages.

For the full corpus map read `llms.txt` at the site root; for the tool
surface (search + page fetch as MCP tools) see `/mcp`.
