# Introduction

Mechanic is a Shopify automation and development platform. Write Liquid code that responds to store events, queries the Shopify Admin API, calls external services, and performs complex multi-step workflows — with no servers to manage.

* [Browse the task library](https://tasks.mechanic.dev/) — hundreds of ready-to-use automations for tagging, emails, inventory, fulfillment, and more
* [Get started](https://learn.mechanic.dev/getting-started) — install Mechanic and set up your first task in minutes
* [Build something custom](https://learn.mechanic.dev/custom) — create a task tailored to your store's workflow
* [Join our Slack community](https://learn.mechanic.dev/resources/slack) — get help and share ideas with other merchants and developers

{% hint style="info" %}
Find Mechanic on the Shopify App Store: [apps.shopify.com/mechanic](https://apps.shopify.com/mechanic)
{% endhint %}

## Can Mechanic help me?

Mechanic gives you a task library with hundreds of ready-to-use automations — and a full development environment for building your own. Tasks are real code: Liquid with direct access to Shopify's GraphQL API, external HTTP services, and composable event-driven workflows. Here's how to tell if it fits your use case.

1. Are you working on something Shopify-related?
   * Mechanic is only available for Shopify.
2. Is what you're looking for already available from [Mechanic's task library](https://tasks.mechanic.dev/)?
   * We have hundreds of common scenarios already handled with pre-written, open-source, modifiable, off-the-shelf tasks.
3. Is what you're trying to do something Shopify supports?
   * Mechanic works through Shopify's own systems. If Shopify can do it, Mechanic can usually automate it. ([Here's what Shopify's Admin API covers.](https://shopify.dev/docs/api/admin-graphql))
4. Need something tailored to your store?
   * You can [build a custom task](https://learn.mechanic.dev/custom) yourself, or [hire a developer](https://learn.mechanic.dev/hire-a-developer) to create one for you. Either way, the path is well-established.

That list wasn't exactly a formal flowchart, but we hope it's helpful as you're evaluating Mechanic. :) The short version: Mechanic handles the workflows that are too complex for built-in Shopify tools, backed by a community that has collectively solved hundreds of distinct automation problems. (Join our [community Slack workspace](https://learn.mechanic.dev/resources/slack)!)

{% hint style="info" %}
Got a question you need answered now? [Join our Slack workspace.](https://join.slack.com/t/usemechanic/shared_invite/zt-cq84nrs7-ggYbYTbf~CrCjTg8nmHP2A) 💬
{% endhint %}

## How does Mechanic work?

### Tasks, events, and actions

A developer writes [**tasks**](https://learn.mechanic.dev/core/tasks) – Liquid code that responds to [**events**](https://learn.mechanic.dev/core/events), like a Shopify webhook, a manual trigger, a regular interval (e.g. hourly, daily), or an incoming email. Tasks use [**subscriptions**](https://learn.mechanic.dev/core/tasks/subscriptions) to signal their interest in specific event types.

When a task receives an incoming event, it can choose to generate an [**action**](https://learn.mechanic.dev/core/actions) – an operation that has an effect.

* The [Shopify](https://learn.mechanic.dev/core/actions/shopify) action makes changes to a Shopify store, like tagging, publishing, creating or deleting resources. It provides direct and complete access to Shopify's admin API, with support for both REST and GraphQL.
* The [Email](https://learn.mechanic.dev/core/actions/email) action is for sending email. It supports custom templates, and attachments.
* The [FTP](https://learn.mechanic.dev/core/actions/ftp) action is for uploading files to an FTP or SFTP server. These files may be generated by the task, or can be fetched from external locations.
* The [HTTP](https://learn.mechanic.dev/core/actions/http) action performs any request, to any HTTP endpoint. This facilitates integration with third-party APIs.
* The [Files](https://learn.mechanic.dev/core/actions/files) action generates a variety of file formats, including PDF, CSV, ZIP, and anything retrieved from a public URL. Files generated this way receive a temporary URL of their own, and can be fed into other tasks for further processing.

For a complete list of supported actions, see [Actions](https://learn.mechanic.dev/core/actions).

### Liquid

Tasks are written in [**Liquid**](https://learn.mechanic.dev/platform/liquid/basics) – the template language created by Shopify. But Mechanic extends Liquid well beyond templating: tasks can loop through paginated API results, transform complex data structures, branch on conditions, emit events that trigger other tasks, and construct arbitrarily complex action sequences. In the same way that a Liquid theme receives browser requests and renders HTML, a Mechanic task receives events and renders actions (by defining them with JSON).

In Mechanic, Liquid is extended with filters for [parsing JSON, generating CSV, computing HMACs](https://learn.mechanic.dev/platform/liquid/filters), and manipulating complex data structures — including first-class support for [arrays](https://learn.mechanic.dev/platform/liquid/basics/types#array) and [hashes](https://learn.mechanic.dev/platform/liquid/basics/types#hash).

### Run queues

Mechanic performs work using queues of [**runs**](https://learn.mechanic.dev/core/runs), with no limit on how large each queue can become. If there is a sudden surge of incoming events for a Shopify store, the store's dedicated Mechanic queue could become delayed. This is an important difference between Mechanic and many other systems: in a high-traffic period, Mechanic will never refuse incoming events for a store; instead, it will process each one as soon as possible, by putting them into a run queue. The rate at which Mechanic processes work varies, depending on [concurrency](https://learn.mechanic.dev/core/runs/concurrency) and the [Shopify API rate limit](https://learn.mechanic.dev/core/shopify/api-rate-limit).
