Install
openclaw skills install @ifttt/iftttConnect OpenClaw to IFTTT's hosted MCP server and automate hundreds of services — discover triggers and actions, build and manage Applets, and run actions and queries. Use when the user mentions IFTTT, asks what they can automate, or describes an automation like "when X happens, do Y".
openclaw skills install @ifttt/iftttIFTTT is "if this, then that" — automation across hundreds of services, from Gmail and Google Sheets to Philips Hue and Webhooks. This skill connects OpenClaw to IFTTT's hosted MCP server at https://ifttt.com/mcp and teaches the agent to discover services, build Applets, and run actions responsibly.
Add the server to the OpenClaw config:
{
"mcp": {
"servers": {
"ifttt": {
"url": "https://ifttt.com/mcp",
"transport": "streamable-http",
"auth": "oauth"
}
}
}
}
Reload so the running process picks up the new server, then authenticate:
openclaw mcp reload
openclaw mcp login ifttt
The browser opens IFTTT's authorization page — sign in (or create a free account) and approve access. On a headless install the command prints the authorization URL instead; open it on any device, then finish with openclaw mcp login ifttt --code <code>.
There are two separate layers of authentication. Do not confuse them.
Layer 1 — connecting the MCP server itself (OpenClaw-managed OAuth). No IFTTT tool performs this login. If IFTTT tools are unavailable or every call fails with an authentication error:
openclaw mcp login ifttt and approve access in the browser. Then stop and wait for the user to confirm before retrying — do not rewrite config files or retry in a loop.get_user_info. It returns the user's IFTTT plan tier, which gates some features (e.g. Filter Code requires Pro+).Layer 2 — connecting individual services (IFTTT-managed). Once the server is authenticated, each service (Gmail, Dropbox, ...) still needs its own connection on the user's IFTTT account:
connect_service with the service_slug — it returns a connect_url. Present that URL to the user as a clickable link, wait for them to finish connecting, then retry the original request.connect_service reports mode: "reconnect" for a specific account, the account's authorization expired — present the reconnect_url and wait for the user to re-authorize before retrying.slug (e.g. google_sheets). Never guess slugs — always look them up with search_services or get_services.Discovery (read-only):
get_user_info — account, plan tier, and limitssearch_services / get_services — find services by keyword or list themget_steps — fetch triggers, queries, and actions for one or more services in a single call (preferred)get_triggers / get_queries / get_actions — per-service, per-type variantsmy_applets / search_applets / get_applet — inspect the user's existing AppletsConnections:
connect_service — returns a connect_url (or reconnect_url) for linking a service account; see AuthenticatingApplet lifecycle:
create_applet / edit_applet — build or modify an Appletenable_applet / disable_applet / remove_applet — manage Applet stateset_applet_filter_code — add conditional logic (Pro+ only)Direct execution:
run_action — perform a one-off action immediately (has real-world side effects)run_query — fetch data from a connected servicegeocode — resolve place names to coordinates for location-based triggerssearch_services with keywords from the user's request to get exact service slugs. Never guess a slug.get_steps with the trigger service and action service(s) to fetch available triggers, queries, and actions with their field definitions, ingredients, and a ready-made step_template.connected and a connect_url when a service isn't connected. Present the connect_url to the user, wait for confirmation, then re-run discovery to pick up their account_id.step_template from each chosen step verbatim, then fill in account_id and the step's fields. Action and query fields can reference trigger/query ingredients — use them to pass data between steps.create_applet with name, an optional but recommended description, the trigger, and actions (plus optional queries and actions_delay up to 14,145 seconds). The Applet is created and enabled immediately — tell the user this before calling. On success, share the returned applet_url so the user can view it.create_applet returns structured errors. Fix the referenced fields and retry; don't retry unchanged input.get_applet first to see the Applet's current configuration, then edit_applet with the changed pieces.set_applet_filter_code adds conditional logic between trigger and actions.made_it_your_own: true, a new user-owned copy of a community Applet was created — tell the user explicitly and use the new applet_slug going forward.run_query to preview the data a query step would return.run_action to test an action — but it performs the action for real (sends the email, turns on the lights). Confirm with the user before running actions with visible side effects.geocode to convert place names.search_services, get_steps, my_applets, or get_applet first.openclaw mcp login ifttt, then wait for their confirmation before retrying.create_applet enables the Applet immediately. Summarize what the Applet will do (trigger, actions, and any queries or delay) and get the user's confirmation before creating it.remove_applet (permanent) or run_action (performs the action for real — messages get sent, devices get switched).connect_service, present the returned connect_url or reconnect_url to the user as a link, wait for them to confirm, then retry the original request."When I get an email with an attachment, save it to Dropbox"
"Turn my office lights red whenever CI fails"
"Send me a phone notification every day at 9am with my first calendar event"
"Add a row to my expenses spreadsheet every time I get a receipt email"
"What's the temperature from my weather station right now?"